过期的流星集合

时间:2014-08-14 10:05:59

标签: meteor

我想设置一个在Meteor中客户端和服务器之间同步的会话绑定值。我认为这应该在Collection中完成,因为Session并没有在客户端和服务器之间同步,对吧?在一段时间后清除数据非常重要,因为它实际上是我希望存储的base64编码图像。

是否可以设置Meteor Collection的到期日期?

2 个答案:

答案 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不与服务器同步。