检查上次发出请求的时间,如果时间超过一分钟,则从数据库中删除内容

Checking the last time a request has been made, deleting stuff from database if the time exceeds a minute

我正在尝试制作一个计时器来检查对特定路径的最后一个请求是何时发出的,如果最后一个请求是在一分钟多以前发出的,我希望脚本从 mongodb 数据库.

我曾尝试通过会话来实现这一点,但一直没有成功。我还尝试通过请求将当前时间保存到数据库,然后检查它,但我不知道如何使计时器“在后台运行 运行”,如果可能的话。我还希望每个 ID 的计时器 运行(ID 包含在请求的 table 中)

使用 TTL index 可能会对您有所帮助。它将允许您在访问文档时设置它们的到期日期,并且 MongoDB 将在时间结束后负责删除它们。

将 TTL 索引添加到您的数据库:

db.entites.createIndex({ requestedAt: 1 }, { expireAfterSeconds: 60 });

发出请求后,通过为索引字段设置当前日期来更新要过期的文档:

db.entites.updateMany({ requestId }, { $set: { requestedAt: new Date() } });

任何设置了 requestedAt 字段的文档,将在设置时间戳 60 秒后删除。

您可以尝试以下选项:

对于每个请求,将一些详细信息存储在名为 last_request_time 的变量中,例如时间戳。每个请求都会更新 last_request_time 值。

运行 一个 cron 作业 - 后台作业每 10 秒(或 15、20 或 30 秒)运行一次。参见 node-cron

工作:

Calculate difference of current_time and last_request_time
If difference is greater then 60 seconds:
    Set the last_request_time value to null
    Delete document from database