当文档日期字段超过

时间:2016-01-25 21:46:53

标签: javascript mongodb date meteor observer-pattern

我在MeteorJS中使用MongoDB,我想知道是否可以观察字段值? 我知道我们可以观察文档更新,创建或删除,但我不了解字段值。

我的每个文档都有一个名为time_next_action的字段(带有Javascript日期值),我希望在此属性过去时更新每个文档。

实际上我有一个2次/秒的间隔,但是:

  • 每次需要Collection.find({})
  • 回调不是在正确的时间完全调用,而是在0到500毫秒后调用。

这是我的实际代码(但我不喜欢)

Meteor.setInterval(function() {
 beginIntervals();
}, 500);

let beginIntervals = function() {
  let now = new Date()
  let games = Games.find({time_next_action: {'$lt': now}}).fetch()

  _.each(games, game => {
    /* Do something */
    Games.update(game._id, {'$set': update})
  })
}

1 个答案:

答案 0 :(得分:1)

使用remcoder:chronos包定义被动时间变量,然后将更新包装在Tracker.autorun中:

let now = Chronos.currentTime();

Tracker.autorun(function(){
  let games = Games.find({ time_next_action: { $lt: now }}).fetch();
  _.each(games, game => {
  /* Do something */
    Games.update(game._id, {'$set': update})
  })
});

然而效果与您的代码基本相同,只是更简洁一点。 Chronos将每秒更新一次响应时间(可更改),这将导致跟踪器触发,这将运行查找,然后进行更新。