我有一个身份验证系统,用户需要在创建帐户后验证他们的邮箱,然后帐户的状态将从待定更改为活动.
我想实现一个功能,如果用户没有在时间框架内验证他们的邮箱,帐户将被删除.通过在模式中设置Expire域,我能够完成删除部分:
const userSchema = new mongoose.Schema<IUser>(
{
email: {
type: String,
required: true,
},
status: {
type: String,
default: "Pending",
required: true,
},
expiresAt: {
type: Date,
default: () => Date.now() + 30 * 1000,
expires: 30
}
},
{
timestamps: true
}
然而,即使我故意删除了expiresAt
字段,过期计数器似乎仍然在计数,文档仍然被删除.
const user = await User.findById(tokenId).exec();
user.status = 'Active';
user.expiresAt = undefined;
const updatedUser = await user.save();
我想知道有没有办法在验证后停止或完全删除TTL功能?