2012-04-18 5 views
9

データがデータベースに追加されたときにユーザーにアラートを表示しようとしています。だから私は、(クライアント側で)書いた:メテオでcursor.observe({追加})の動作

Meteor.autosubscribe(function() { 
    ItemCollection.find().observe({ 
    added: function(item) { 
     // Alert code 
    } 
    }); 
}); 

そして私は新しいアイテムが(私は:)通常であると仮定)サーバ側のデータベースが、アラートに追加されたときだけではなく、アラートが表示されていることがわかりましたページをリフレッシュすると、以前に追加されたアイテムごとに表示されます。 Meteorは起動時にMongoデータベースからすべてのデータを取得して(ローカルMinimongo DBにデータを取り込む)、ローカルデータベースに追加された各項目の 'added'イベントを起動するとします。

これは正常な動作ですか?サーバー上のデータベースに「本当に」追加されたアイテムだけを受け取るにはどうすればよいですか?

答えて

13

クライアントサイドデータベースのカーソルを確認していて、ページの読み込みが完了するまでそのデータベースが同期を完了しない可能性があります。 this questionへの回答で説明したように、コレクションを明示的に購読することができます。

データにcreated_atフィールドがある場合は、ページが読み込まれた後に作成されたアイテムを確認できます。

ItemCollection.find({created_at : {$gt: some_current_time}}).observe({ 
    added: function(item) { 
     // Alert code 
    } 
    }); 
+0

ご協力いただきありがとうございます。私はこれを試してみよう! – TiuSh

+0

恐ろしい!私はそれが助けられたと聞いて本当にうれしいです。 – lashleigh

+0

この質問に対する回答もご覧ください:http://stackoverflow.com/questions/21355802/meteor-observe-changes-added-callback-on-server-fires-on-all-item –

関連する問題