Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
Node.js 如何让mongoose ttl根据时间戳分别删除记录_Node.js_Mongodb_Mongoose_Ttl - Fatal编程技术网

Node.js 如何让mongoose ttl根据时间戳分别删除记录

Node.js 如何让mongoose ttl根据时间戳分别删除记录,node.js,mongodb,mongoose,ttl,Node.js,Mongodb,Mongoose,Ttl,我在我的mongoose数据库中使用mongoose ttl插件,我的问题是,每当ttl删除一条记录,我重启我的节点服务器,我的服务器通过mongoose与mongodb建立连接时,所有具有ttl索引且尚未过期的记录也会被删除。有时,重新启动服务器并建立连接会删除集合中的所有记录,即使它们的时间不近。最糟糕的是,即使时间过去了,所有记录都不会被删除,直到最后一个具有TTL索引的文档被删除。请帮忙 const EventSchema = new Schema({ //

我在我的mongoose数据库中使用mongoose ttl插件,我的问题是,每当ttl删除一条记录,我重启我的节点服务器,我的服务器通过mongoose与mongodb建立连接时,所有具有ttl索引且尚未过期的记录也会被删除。有时,重新启动服务器并建立连接会删除集合中的所有记录,即使它们的时间不近。最糟糕的是,即使时间过去了,所有记录都不会被删除,直到最后一个具有TTL索引的文档被删除。请帮忙

    const EventSchema = new Schema({
      //
    });

    EventSchema.plugin(ttl, { ttl: 60000});

    //
    const event = new Event({
      ttl: "2m"  
    })
事实上,如果您想要描述您应该使用的行为,您不必使用mongoose ttl

猫鼬的设置可能如下所示:

const EventSchema = new Schema(
  {
    expiresAt: { type: Date, default: Date.now, expires: 0 },
  },
);

EventSchema.virtual('ttl').set(function(ms) {
  this.expiresAt = new Date(Date.now() + ms);
});

EventSchema.virtual('ttl').get(function() {
  return this.expiresAt - Date.now();
});

const event = new Event({
  ttl: 2 * 60 * 1000, // expire time in milliseconds
});

如果您有固定的过期时间,只需不用担心ttl setter和getter以及set expires:理想的ttl是固定值还是每个事件都会更改?非常感谢兄弟