Meteor.publish('mountCarmelData', function dataPublication(){
return MountCarmel.find({},
{
sort: {created_at: -1}
});
});
有什麼辦法限制這本刊物只發布過去24小時的數據嗎?每個記錄上都有一個名爲'created_at'的時間戳記。如何在Meteor發佈一個集合,將最近24小時的數據發送給客戶端?
Meteor.publish('mountCarmelData', function dataPublication(){
return MountCarmel.find({},
{
sort: {created_at: -1}
});
});
有什麼辦法限制這本刊物只發布過去24小時的數據嗎?每個記錄上都有一個名爲'created_at'的時間戳記。如何在Meteor發佈一個集合,將最近24小時的數據發送給客戶端?
您可以使用moment.js得到一個時間戳,這正是小於24小時當前日期:
let yesterday = moment().subtract(24, 'hours').toDate();
然後在您的刊物:
Meteor.publish('mountCarmelData', function dataPublication(){
return MountCarmel.find(
{
createdAt: { $gte : yesterday }
},
{});
});
我已經刪除了'排序',因爲在服務器上排序不會導致您的文檔在MiniMongo中排序。您需要在Blaze助手或React容器中添加「排序」以使其工作。
您可以創建一個查詢來執行您想要的操作,但問題在於訂閱將數據提取到客戶端而不刪除舊數據。您可以通過過濾客戶端上的數據來解決這個問題,以便它只顯示24小時的數據,但是如果應用程序仍在運行,集合將會變大,並且可能會佔用瀏覽器中的太多內存。
我會建議你有一個單獨的收集只有24小時的數據。這使得在客戶端處理更簡單,因爲您只需訂閱數據。
看一看這個問題,答案類似的情景:Publish only things who were read 10seconds ago from now
@jerome成功使用這種技術
[基於日期的返回查詢]的可能重複(http://stackoverflow.com/questions/8835757/return-query-based-on-date) – chazsolo