用猫鼬更新“过期”

k88*_*074 4 mongoose mongodb node.js

我是 mongodb 和 mongoose 的新手,我很难弄清楚如何执行以下操作。我有一个架构,比如“用户”,其中包括一个这样的字段:

createdAt  : {type: Date, required: true, default: Date.now, expires: '4h'}
Run Code Online (Sandbox Code Playgroud)

因此,当我创建一个新用户时,比如说var user=new User()(假设 Userrequires是正确的模型),创建的新用户将在(大约)4 小时后被删除(如果我理解正确的话)。

我想知道是否有办法更新expires用户的属性。我想做以下事情:

  • 从我的数据库中检索用户
  • 更新expires,以便用户不再过期
  • 保存更改

任何建议将不胜感激!

Rik*_*kus 5

做到这一点的唯一方法是将值设置为null。你会失去createdAt你可能不想要的价值,所以我个人会做的是:

  1. 删除expires现有字段上的索引。
  2. 创建一个名为expiresor的字段deletionDate,其生存时间为 4 小时。
  3. 如果不应删除用户,请将值设置为null

我个人更喜欢将 设置ttl为 0 并将日期设置为{default: function() { return new Date(Date.now()+1000*60*number_of_hours); }。这将使任意延长文档的生存时间变得更容易,并且在数据库中更容易阅读。