这是我的schema
,我想在5分钟后自动过期此字段。怎么做呢?
const userRegistrationSchema = new mongoose.Schema({
mobile: {
type: Number, trim: true,
},
email: {
type: String, lowercase: true, trim: true
},
// email Varification
verified: {
type: Boolean,
},
otp: {
type: Number,
},
password: {
type: String, trim: true,
},
confirmPassword: {
type: String, trim: true,
},
如果用户输入这个值并像这样存储
mobile: 9561300851
email: "xyz@gmail.com"
verified: false
otp: 8236
和5分钟后,我想我的数据看起来像与otp字段
mobile: 9561300851
email: "skcoder510@gmail.com"
verified: false
我希望我已经解释了我的问题,然后如何做。
MongoDB只支持使用TTL在一定时间后删除文档。但是,对于字段删除,您可以在使用OTP后使用$unset删除字段。
https://www.mongodb.com/docs/manual/reference/operator/update/unset/
或者,您可以创建调度程序,它将在特定时间后运行,并使用$unset删除所有已使用的OTP字段。
AFAIK MongoDB只支持文档TTL,不支持字段TTL: https://www.mongodb.com/docs/manual/core/index-ttl/
您可以考虑创建一个单独的OTP模式,其TTL索引为5分钟。相关的Mongoose文档可以在这里找到:https://mongoosejs.com/docs/api.html schemadateoptions_SchemaDateOptions-expires