如果在 NodeJS 中未确认电子邮件,则自动删除 Mongo 文档

Auto Delete Mongo Document if Email is Not Confirmed in NodeJS

我有一个使用 Express 和 Mongoose 的 NodeJS 用户注册系统。在用户创建帐户的那一刻,确认电子邮件将发送到该电子邮件,当单击 link 时,它将确认他们的帐户并让他们设置密码。如果用户在 60 分钟内没有确认他们的帐户,我想删除整个 mongo 文档。解决此问题的最佳方法是什么?

好吧 mongoosemongoDBjavascript 包装器,因此您应该只使用常规 javascript 来完成此操作。

我会利用 pre 挂钩:

https://mongoosejs.com/docs/middleware.html#pre

我会设置 60 分钟的超时和 运行 对 mongoosedelete 查询,并将您响应 setTimeout 函数获得的计时器 ID 设置为创建的实际文档。

然后,在验证帐户的情况下,我会清除计时器并删除新用户文档中的条目。

如果没有任何反应,文档将以编程方式删除。

schema.pre("save", async function(next) {
  const id = setTimeout(function() {
    const document = await Model.findOne(/* use some unique value with this */);
    await document.remove() 
    }, 3600000);
  this.timerId = id;
  next();
}

然后在验证的情况下你 运行:

const document = await Model.findOne(/* find the document */);
clearTimeout(document.id);

这应该足以处理整个流程。

如果够了请告诉我! :)