Mongo 观察文档日期字段何时过去
Mongo Observe when a document date field is past
我正在使用 MongoDB 和 MeteorJS,我想知道是否可以观察字段值?
我知道我们可以观察文档更新、创建或删除,但我不知道字段值。
我的每个文档都有一个名为 time_next_action
的字段(具有 Javascript 日期值),我想在该属性过去时更新每个文档。
实际上我有一个间隔叫 2 times/second,但是 :
- 每次需要一个
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})
})
}
使用 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 将每秒更新一次反应时间(可变),这将导致跟踪器触发,这将 运行 找到并进行更新。
我正在使用 MongoDB 和 MeteorJS,我想知道是否可以观察字段值? 我知道我们可以观察文档更新、创建或删除,但我不知道字段值。
我的每个文档都有一个名为 time_next_action
的字段(具有 Javascript 日期值),我想在该属性过去时更新每个文档。
实际上我有一个间隔叫 2 times/second,但是 :
- 每次需要一个
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})
})
}
使用 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 将每秒更新一次反应时间(可变),这将导致跟踪器触发,这将 运行 找到并进行更新。