2016-12-16 38 views
1

故事: 我已經使用流星1.4與角1.我想讓「Todo 「通過使用Meteor.publish私人,這裏是客戶端代碼:

var now = new Date(); 
var start = new Date(); 
start.setHours(0, 0, 0, 0); 
this.helpers({ 
    todos() { 
    return Todos.find({createdAt: {$gte: start, $lt: now}, userId: Meteor.userId()}, { 
      sort: { 
       createdAt: -1 
      } 
     }); 
    }, 
    currentUser() { 
     return Meteor.user(); 
    } 
}); 

問題: 當我用Meteor.publish以‘用戶id’,待辦事項列表界面效果不錯,它可以自動更新UI我增加了一個新的後去做。但是在我添加了Meteor.publish篩選器和createdAt: {$gte: start, $lt: now}之後,我必須刷新頁面(F5),然後才能看到新的待辦事項。這裏是服務器端公佈代碼:

Meteor.publish('todos', function tasksPublication() { 
    var now = new Date(); 
    var start = new Date(); 
    start.setHours(0, 0, 0, 0); 
    return Todos.find({createdAt: {$gte: start, $lt: now}, userId: this.userId}); 
}); 

任何人都知道如何解決它?

回答

0

我修復了這個錯誤。至於我是不是深入到流星的緩存,原因如下是我的猜測:

  1. 客戶端UI是暴飲暴食緩存(miniMongo)的「Todos.find({createdAt:{$ GTE:開始,$ LT :now},userId:this.userId})「
  2. 插入一個新的待辦事項後,它會先插入到miniMongo中。
  3. miniMongo重新運行#1查詢,但「現在」是#1時間的「現在」。並發現#2的結果不合適。所以它從客戶端刪除了新記錄。

這裏是我的變化: Code Change

,如果您有任何不同的想法,請讓我知道。

感謝。