Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 过期的流星收藏_Meteor - Fatal编程技术网

Meteor 过期的流星收藏

Meteor 过期的流星收藏,meteor,Meteor,我想在Meteor中设置客户端和服务器之间同步的会话绑定值。我认为这应该在集合中完成,因为会话在客户端和服务器之间不同步,对吗?但是,数据在一定时间后被清除是很重要的,因为我要存储的实际上是base64编码的图像 是否可以为Meteor集合设置过期日期?您可以在一定时间后删除集合的记录 服务器端代码: //Run every minute Meteor.setInterval(function() { MyCollection.remove({expires: { $gte: new

我想在Meteor中设置客户端和服务器之间同步的会话绑定值。我认为这应该在集合中完成,因为会话在客户端和服务器之间不同步,对吗?但是,数据在一定时间后被清除是很重要的,因为我要存储的实际上是base64编码的图像


是否可以为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的答案标记为正确。