当时间遇到收集值

时间:2015-10-15 10:34:52

标签: javascript mongodb meteor

在我的mongoDB中,我收到了一个名为Questions的集合。每个问题都有一个日期,时间和显示的真或假。现在,我想在满足当前日期时更新问题,显示:true。

我不知道如何更新集合而不必触发事件,所以我认为它必须在服务器端工作。

现在这是在我的服务器端检查它是否与秒(而不是完整日期)一起工作,但它只更新了一个问题,我知道这不是正确的方法。

Meteor.startup(function () {
    return Question.update({
        time: 40
    },{
        $set: {display: true}
})

更清楚地说明一点:

如果当前时间与收集中的问题时间相符,请设置display:true。

我希望有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

如果您的目标只是显示或不显示基于时间的文档,那么您实际上并不需要在指定时间更改文档。您可以让时间自己被动并根据它进行显示。查看remcoder:chronos包。

您可以在查询条件中执行此操作,例如:

Template.myTemplate.helpers({
  myDocuments: function(){
    var now = Chronos.currentTime(); // updates every second by default
    return MyCollection.find({ time: { $gt: now }});
  }
});

这比改变文件本身要清晰得多。

答案 1 :(得分:0)

您想使用Meteor.setTimeout

您的代码应如下所示:

Meteor.setTimeout(function () {
  Meteor.update({ _id: someId }, { $set: { display: false } }
}, 1000); // will run after 1000ms

您可以选择要决定要更新的文档的任何选择器。