Mongo 观察文档日期字段何时过去

Mongo Observe when a document date field is past

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

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

实际上我有一个间隔叫 2 times/second,但是 :

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

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})
  })
}

使用 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 将每秒更新一次反应时间(可变),这将导致跟踪器触发,这将 运行 找到并进行更新。