,因爲它的流星實現的發佈/訂閱模式是所有關於反應的數據更新。在你的情況下,這意味着如果作者或文章的最後更新日期發生變化,那麼用戶會立即看到這一變化反映在他們的主頁上。
但是,您想要發送一次數據,而不是再次更新它。
流星有一個內置的功能來處理這種情況:Methods。方法是客戶端告訴服務器執行計算和/或發送純粹的非反應數據的一種方式。
//Server code
var lastTenArticlesOptions = {
sort : {
createdAt : -1
},
limit : 10
}
Meteor.methods({
'retrieve last ten articles' : function() {
return latestNews.find({}, lastTenArticlesOptions).fetch()
}
})
請注意,與出版物相反,我們不發送Mongo.Cursor
!光標在出版物中用作方便(又名魔術)的方式來告訴服務器要發送哪些數據。
在這裏,我們直接通過光標fetch
發送數據數據以獲得一系列文章,然後自動發送到客戶端EJSON.stringify
ied。
如果你需要無功數據發送到客戶端,並在以後的某個時間停止推進更新,那麼你最好的選擇是依靠一個發佈/訂閱暫時,然後手動stop
的publication(服務器端)或subscription(客戶端):
Meteor.publish('last ten articles', function() {
return latestNews.find({}, lastTenArticlesOptions)
})
var subscription = Meteor.subscribe('last ten articles')
//Later...
subscription.stop()
在你將存儲出版物手柄(this
服務器端)和則m將其刪除。
停止訂閱或發佈不會破壞已發送的文檔(用戶不會看到最近的10篇文章突然消失)。
這將是很好,如果這個問題包含[mcve] ... –
每個上面添加了一些代碼。 – Jon