2014-08-31 25 views
0

我有頁面上的項目列表,我想添加偵聽插入集合的偵聽器。ObserveChanges對所有項目的'添加'回調,即使已經存在db

以下代碼位於客戶端。

Messages.find().observeChanges({ 
    added: function(){ 
     console.log('Message added'); 
    } 
}); 

但是,如果在收集已經存在的項目,後負荷頁將觸發回調的所有項目。爲什麼回調'已添加'爲已收藏中的物品觸發,以及如何僅檢測真正新的插入物?

+0

現在忽略'added'的機制,你想達到什麼目的?例如,你是否想顯示所有新消息,因爲特定的模板被取消了?我問,因爲可能比使用'observeChanges'更直接。 – 2014-08-31 18:05:35

回答

0

有兩種解決方案。對於第一個,看這裏:https://github.com/oortcloud/unofficial-meteor-faq#why-does-observe-fire-a-bunch-of-added-events-for-existing-documents

第二個是這樣的:

var isInitial = true 

Messages.find().observeChanges({ 
    added: function(){ 
     if(!isInitial){ 
      console.log('Message added'); 
     } 
    } 
}); 

isInitial = false 

這工作,因爲調用observeChanges將火已經在Minimongo文件添加回調返回之前(和isInitial將被設置爲false)。

+0

第二個是輝煌!我刪除了我的答案,因爲它: -/ (雖然我給我的答案中的文檔鏈接實際上使用你的解決方案(服務器端雖然),但我太愚蠢,看不見它:() – 2014-09-01 07:41:37

相關問題