Meteor 过期的流星收藏
我想在Meteor中设置客户端和服务器之间同步的会话绑定值。我认为这应该在集合中完成,因为会话在客户端和服务器之间不同步,对吗?但是,数据在一定时间后被清除是很重要的,因为我要存储的实际上是base64编码的图像Meteor 过期的流星收藏,meteor,Meteor,我想在Meteor中设置客户端和服务器之间同步的会话绑定值。我认为这应该在集合中完成,因为会话在客户端和服务器之间不同步,对吗?但是,数据在一定时间后被清除是很重要的,因为我要存储的实际上是base64编码的图像 是否可以为Meteor集合设置过期日期?您可以在一定时间后删除集合的记录 服务器端代码: //Run every minute Meteor.setInterval(function() { MyCollection.remove({expires: { $gte: new
是否可以为Meteor集合设置过期日期?您可以在一定时间后删除集合的记录 服务器端代码:
//Run every minute
Meteor.setInterval(function() {
MyCollection.remove({expires: { $gte: new Date() }});
}, 60000);
MyCollection.deny({
insert: function(userId, doc) {
//Set expiry to 24 hours from now
doc.expires = new Date( new Date().getTime() + (36000000*24) );
}
});
插入时,可以设置有效期:
服务器端代码:
//Run every minute
Meteor.setInterval(function() {
MyCollection.remove({expires: { $gte: new Date() }});
}, 60000);
MyCollection.deny({
insert: function(userId, doc) {
//Set expiry to 24 hours from now
doc.expires = new Date( new Date().getTime() + (36000000*24) );
}
});
deny方法会在服务器上添加过期时间,即使您从客户端添加文档也是如此。通过这种方式,您可以确保文档在客户端的任何时间过期,而这通常是不正确的
然后您可以在客户端插入文档
客户端
MyCollection.insert({ base64data: xxxxxx });
是的,您是对的,
会话
不与服务器同步。我建议使用TTL参数索引集合中的特定字段,这将确保文档在指定时间后过期
从Mongo shell执行以下操作:
db.myCollection.ensureIndex( { "fieldName": 1 }, { expireAfterSeconds: 3600 } )
写得好的答案和很好的解决方案,但由于MongoDB显然提供了本地支持,我将@KyleSA的答案标记为正确。