【问题标题】:How can I update the expires property on createdAt field in mongoose to avoid the document being deleted?如何更新 mongoose 中 createdAt 字段的 expires 属性以避免文档被删除?
【发布时间】:2021-09-26 13:56:13
【问题描述】:

我正在尝试向此应用添加帐户验证,并且我已将已创建但未验证的用户帐户设置为在使用 30 秒后自行删除。

createdAt: {
  type: Date,
  default: Date.now,
  index: {
    expires: 30,
  },
},

但现在我正在寻找一种方法来防止文档在 30 秒后被删除,但我还没有找到可行的解决方案。

【问题讨论】:

  • 而不是删除用户帐户,最好的方法不是保持状态并将其标记为“未验证”吗?
  • 我们不希望数据占用空间,所以我们想删除它。

标签: javascript node.js mongodb express mongoose


【解决方案1】:

这应该对你有用:

假设这是User 模型。

await User.syncIndexes();

您需要在User 模型中更新的另一件事是:

createdAt: {
  type: Date,
  default: Date.now,
},

【讨论】:

    【解决方案2】:

    Mongoose 使用 MongoDB TTL 索引使文档过期,见https://docs.mongodb.com/manual/core/index-ttl/

    如果文档中的索引字段不是日期或包含日期值的数组,则文档不会过期。

    如果文档不包含索引字段,则文档不会过期。

    因此,为了防止文档过期,您可以取消设置字段,将其设置为非日期值,或将日期设置为遥远的未来。

    【讨论】:

      猜你喜欢
      • 2021-02-06
      • 2019-05-27
      • 2019-02-26
      • 1970-01-01
      • 2023-02-11
      • 2013-02-07
      • 2023-04-09
      • 1970-01-01
      • 2015-11-08
      相关资源
      最近更新 更多