2016-04-03 33 views
2

大多數Meteor都圍繞集合和遊標進行處理,並在收集文檔時出現並獲取符合條件的新文檔。然而,我正在處理更大的文檔,這些文檔包含多個字段,並且具有深度且不可預測的結構。在頂層有一個清晰的模式,但是一些子文檔是不可預知的json數據。如何使文檔的一部分在Meteor中不被反應

但是,讓我們來看一個簡單的例子:

Reports = new Mongo.collection('reports'); 

Meteor.publish('reports', function() { 
    return Reports.find({}); 
}); 

,然後在客戶端,我打開一個報告,把它放在屏幕上的使用並不只-HTML相當複雜的渲染功能,然後有嵌入在報告中的自由文本註釋字段。他們改變的時候,我想自動保存

Meteor.call("autosaveReport",reportId,comment); 

再有就是寫在註釋

Meteor.methods({ 
    "autosaveReport": function(reportId,comment) { 
     Reports.update({_id:reportId},{$set:{comment:comment}}); 
    } 
); 

問題是,每一次註釋自動保存,流星跟蹤重播流星方法所有訂閱和發現都與本報告相關。而且由於報告很大且渲染複雜,該重新加載對用戶是可見的並且破壞了無縫自動保存的目的。

所以,問題 - 是否有可能觸發mongo文件的部分反應性?目前我已經通過手動比較渲染上的新舊文檔來解決這個問題,如果核心沒有區別,那麼停止重新渲染。這感覺很奇怪,並且對流星的精神。

回答

1

在你的助手或路由設置數據上下文爲模板,在查找中使用{reactive: false}

return Reports.find(query,{reactive: false}); 

這樣的助手將不會更新底層對象改變時。

該標誌全部或全部沒有,但是,它不會讓您選擇要觀察哪些更改以及忽略哪些更改。

相關問題