2016-06-12 57 views
0

我的Meteor應用程序中有一個日期選擇器。當我插入或更新日期到我的收藏,從日期選擇器的價值創造一個變量之後,我這樣做:在Meteor collection中過濾今天的日期

due: moment(new Date(due)).toDate() 

其中插入日期爲蒙戈是這樣的:

Tue Jun 21 2016 00:00:00 GMT-0400 (EDT) 

什麼我想要做的是過濾掉「今日」的任務,而我沒有收到任何數據到我的模板中。如果我在沒有過濾的情況下執行find(),那麼我會返回所有任務。所以模板渲染只是我無法獲得正確的過濾。

這就是我現在的代碼。

today: function(){   
    var today = moment().startOf(Date()); 
    var tomorrow = moment(today).add(1, Date()); 

    return Items.find({ 
     due:{ 
      $gt: today.toDate(), 
      $lt: tomorrow.toDate() 
     } 
    }); 
}, 

我也試圖只是這樣做:

var today = new Date(); 
Items.find({ 
    due:{$eq:{today} 
    }); 

我在做什麼錯。由於日期選擇器會在00:00時間內影響查詢?

任何幫助,將不勝感激。謝謝。

回答

1

希望這個例子可以幫助你:

Template.filmstrip.helpers({ 
    album() { 
    var today = new Date(); 
    today.setHours(0,0,0,0); 
    return photos.find(
    {time: {$gte: today } }, 
    {sort: {time:-1} } 
    ).fetch(); 
    } 
}); 
+0

我感謝你爲這個例子。我最終能夠通過以下方式使這個工作成功,就像在你的例子中設置'today'var將小時設置爲零,但$ gte也給了我未來的任務。所以,自從$ eq以來,我認爲在minimongo中不起作用的是與今天的變化的'正確場'相匹配。謝謝 –

1

要取得今天到期的任務你需要使用$gte

due:{ 
    $gte: today.toDate(), 
    $lt: tomorrow.toDate() 
} 

但是你說你只是想排除這些這意味着您要否定此查詢:

due: { $not: { 
    $gte: today.toDate(), 
    $lt: tomorrow.toDate() 
}}