javascript - 如何使用MongoDB在Meteor中连续发布最新的N条记录?

标签 javascript mongodb meteor

我有一段代码每 30 秒将天气信息存储到 MongoDB 集合中。我想出了一种方法,将最近24小时的数据从服务器发布到客户端,如下所示:

服务器

Meteor.publish('mountCarmelData', function dataPublication(){
    return MountCarmel.find({}, 
    {
        limit: 2880//max of 24 hours
    });
});

客户端

Meteor.subscribe('mountCarmelData');

如果插入一条新记录并且集合中的记录总数小于限制,则这条新记录会自动发送到客户端。问题是当集合中保存的记录超过 2880 条时,新记录不再发送到客户端。

我想知道有没有办法总是把最新的2880条记录发送给客户端。或者也许是一种将新插入的记录发送到客户端的方法。

我需要过去 24 小时的数据来绘制图表,我需要新收集的数据(每 30 秒保存到集合中)来动态更新天气变量。

最佳答案

您需要在发布时对您的收藏进行排序。我假设你在每条记录上都有某种时间戳,你可以按它来排序。例如

{
    limit: 2800,
    sort: {createdAt: -1}
}

-1 将降序排列,从新到旧。

注意:这种排序是为了发布,以确保您发布的是您想要的数据给客户端。如果您的客户需要不同顺序的数据(即降序不是正确的选择),那么客户可以根据需要对发布的数据进行排序。

关于javascript - 如何使用MongoDB在Meteor中连续发布最新的N条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41772507/

相关文章:

javascript - 从 csv 文件访问特定数据并在 html 上显示

mongodb - 使用 NoSQL 文档存储对 RBAC 进行建模的策略

javascript - 部署 Meteor 应用程序最简单的方法是什么?

Meteor.js 用户登录信息

javascript - 重定向网站

javascript - 使用 mutationObserver 似乎无法跟踪 DOM 中的变化表

javascript - 在网站上载/查看图像不起作用

javascript - 有人用过 Mongoose-auth 吗?如何覆盖 findOrCreate Users?

mongodb - 聚合截断日期函数?

javascript - meteor 自动成型 : form with id "asdf" needs either "schema" or "collection" attribute