我想设置一个在Meteor中客户端和服务器之间同步的会话绑定值。我认为这应该在Collection中完成,因为Session并没有在客户端和服务器之间同步,对吧?在一段时间后清除数据非常重要,因为它实际上是我希望存储的base64编码图像。
是否可以设置Meteor Collection的到期日期?
答案 0 :(得分:4)
我建议使用TTL参数索引集合中的特定字段,这将确保文档在指定时间后过期。
从Mongo shell中这样做:
db.myCollection.ensureIndex( { "fieldName": 1 }, { expireAfterSeconds: 3600 } )
答案 1 :(得分:3)
您可以在一段时间后删除集合的记录。
服务器端代码:
//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 });
同样是的,你是对的,Session
不与服务器同步。