在我的mongoDB中,我收到了一个名为Questions的集合。每个问题都有一个日期,时间和显示的真或假。现在,我想在满足当前日期时更新问题,显示:true。
我不知道如何更新集合而不必触发事件,所以我认为它必须在服务器端工作。
现在这是在我的服务器端检查它是否与秒(而不是完整日期)一起工作,但它只更新了一个问题,我知道这不是正确的方法。
Meteor.startup(function () {
return Question.update({
time: 40
},{
$set: {display: true}
})
更清楚地说明一点:
如果当前时间与收集中的问题时间相符,请设置display:true。
我希望有人可以帮助我。
答案 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
您可以选择要决定要更新的文档的任何选择器。