我写了一下。调用方法的事件。此方法将单个项目(InfoId)推送到名为userManagement的集合中。因此,这些项目将分配给该用户。
事件处理程序:
Template.available.events({
"click .push": function(e) {
e.preventDefault();
var InfoId = this.InfoId;
Meteor.call('pushInfo', InfoId);
}, });
方法:
Meteor.methods({
'pushInfo': function(InfoId) {
if (this.userId) {
userManagement.update({
'_id': this.userId
}, {
$push: {
'activeInfos': InfoId
}
}
);
}
}
});
但是,现在我需要从' activeInfos'中自动删除之前添加的单个项目(InfoId)。在特定时间段之后e。 G。三个月。
有没有办法做到这一点?感谢任何帮助。
感谢。
答案 0 :(得分:2)
这样做可以使用cronjob
只需使用meteor add percolate:synced-cron
SyncedCron.add({
name: 'your cron name',
schedule: function(parser) {
// parser is a later.parse object
return parser.text('every 2 hours');
},
job: function() {
console.log("hello");
}
});
此处为schedule:用于设置时间和在Job中:我们将添加我们想要在计划中添加的时间后运行的代码。
在此之后开始你的cron。为此添加此SyncedCron.start();
有关详情,请查看此链接https://github.com/percolatestudio/meteor-synced-cron。
计划时间读取此http://bunkat.github.io/later/parsers.html#overview
我希望这会有所帮助
答案 1 :(得分:0)
解决此类问题的一种方法是使用mongo TTL index使mongo自动删除文档。 TTL索引仅适用于文档(不适用于子文档),因此,如果您想沿这条路线走,则需要将activeInfos
分离到一个单独的集合中,并使用聚合管道的$lookup
阶段在查找过程中重新创建原始文档。
db.active_infos.createIndex( { "createdAt": 1 }, { expireAfterSeconds: appropriateNumberOfSeconds } )