2016-01-28 84 views
0

我有一個簡單的集合,使得像這樣Meteor.js:刪除,同時插入

{{#each posts}} 
    {{> post}} 
{{/each}} 

雖然posts被定義爲給我三個最新的帖子

return Posts.find({}, {sort: {timestamp: -1}, limit: 3}) 

當我插入一個新的發佈後,客戶端立即渲染它(顯示總共4篇文章),幾ms後最早的帖子從DOM中刪除。這讓我回想起三個最新的帖子。

我在這裏的問題是顯示4個帖子的短暫時間段。有什麼辦法讓客戶知道它應該在最新帖子的同時刪除最舊的帖子?

+0

你是如何執行刪除? –

+0

我實際上並沒有去除任何東西。客戶端呈現三個最新帖子,並插入一個新帖子,最舊帖子現在是第四個最新帖子,不應再顯示。新帖子出現時間與舊帖子消失時間之間存在時間差距。 – JacobPariseau

+0

這是因爲延遲補償https://www.discovermeteor.com/blog/latency-compensation/。你可以實現你自己的observeChanges http://docs.meteor.com/#/full/observe_changes –

回答

1

這種問題經常出現。在大多數情況下以及可能在您的情況下都可以使用的修復程序是確保在客戶端上使用與服務器上相同的約束(或者,如果有的話,客戶端上的約束更具限制性)。我假設你在服務器上執行Posts.find?如果是這樣,請確保將相同的條件添加到客戶端的模板助手中的find

+0

我不確定這很容易完成。我的用例是評論,所以從服務器發佈所有相關評論,但在客戶端我限制了我提供的那些評論。我有一個'查看所有評論'按鈕,刪除限制(因此也是問題),但這裏的想法是保持限制 – JacobPariseau

+0

發佈的服務器端find()函數與客戶端相同,除了沒有限制服務器。 – JacobPariseau