如何在Meteor中发布只将最近24小时数据发送给客户端的集合?

时间:2017-02-13 19:16:52

标签: javascript mongodb meteor

Meteor.publish('mountCarmelData', function dataPublication(){
    return MountCarmel.find({}, 
    {
        sort: {created_at: -1}
    });
});

有没有办法限制此出版物仅发布过去24小时的数据?我在每条记录上都有一个名为'created_at'的时间戳。

2 个答案:

答案 0 :(得分:3)

您可以使用moment.js获取比当前日期少24小时的时间戳:

Meteor.publish('mountCarmelData', function dataPublication(){ return MountCarmel.find( { createdAt: { $gte : yesterday } }, {}); });

然后在你的出版物中:

CreateChannelCell

我删除了'sort',因为在服务器上排序不会导致您的文档在MiniMongo中排序。您需要在Blaze助手或React Container中添加'sort'才能使其正常工作。

答案 1 :(得分:0)

您可以创建一个查询来执行您想要的操作,但问题在于订阅将数据提取到客户端而不删除旧数据。您可以通过过滤客户端上的数据来解决此问题,以便它只显示24小时的数据,但如果应用程序处于运行状态,则集合将变大,并可能在浏览器中占用太多内存。

我建议您只有24小时的数据单独收集。这使得在客户端进行处理变得更加简单,因为您只需订阅数据。

查看此问题并回答类似情况:Publish only things who were read 10seconds ago from now

@jerome成功使用这种技术