【发布时间】:2019-10-06 06:54:03
【问题描述】:
我正在尝试设置一个模型,以便在添加表时,它将有一个到期日期,在它到期后,该表将自行删除。我尝试这样实现它:
expires: '1m'
与
expires: 10
我有一个如下设置的表:
const verifySchema = new mongoose.Schema({
_userId: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: 'User'
},
hash: { type: String, required: true },
createdAt: { type: Date, required: true, default: Date.now, expires: '1m' }
});
问题是,一分钟后什么都没有发生。它不会在数据库中被删除。我做错了什么吗?
如何在一分钟后删除表?
【问题讨论】:
-
我不确定
1m速记是否有效。尝试将 1 分钟(以秒为单位)设置为expires: 60。 -
也看看这个问题/答案:stackoverflow.com/q/14597241/1861779
-
注意:您可能需要在更改
expires属性之前删除索引:docs.mongodb.com/manual/core/index-ttl/#restrictions -
删除您的索引并重新创建它。代码看起来不错。
expires: '1m'有效,但请记住 TTL 进程每 60 秒运行一次,因此它并不总是完全准时。我刚刚对其进行了测试,它可以与2m等一起按预期工作。 -
@t.888 你能解释一下删除索引是什么意思吗?另外,我没有更改 expire 属性。它是任何默认值,我从不更改它。我应该改变它吗?
标签: node.js mongodb express mongoose