NodeJ,处理用户投票的到期日期

时间:2018-11-26 15:14:43

标签: node.js mongodb timeout setinterval

我目前正在开发一个应用程序。这也包括某些群聊。 内部的用户可以进行多次投票,例如踢人。投票有效期为1周。如果其他所有用户都发表了意见,那么投票将被删除。到目前为止,一切都很好。

我还需要一种逻辑,如果该逻辑过期,它会自动删除。 到目前为止,我已经想到了将选票的到期日期存储在数据库(MongoDB)中,并按其到期时间戳进行排序。 在NodeJ中,我总是从数据库中加载具有最小到期日期的投票。 然后我通过从当前日期减去投票到期日期来检查还剩下多少时间

Date.now() - voteTmp;

然后我可以设置一个超时,该超时将调用一个函数以删除投票,并自动为下一个投票启动新的超时。设置这么多秒数的超时是否有问题?

您有更好的主意吗? 谢谢:)

1 个答案:

答案 0 :(得分:0)

说明了here事件循环:

simplified overview of the event loop's order of operations

  

当事件循环进入给定阶段时,它将执行该阶段特定的任何操作,然后在该阶段的队列中执行回调,直到队列已用尽或已执行了最大数量的回调。


在每次迭代中,事件循环都会检查满足指定阈值(延迟)的计划计时器,并执行其回调。因此,注册计时器的延迟大小无关紧要

但是,在您的情况下,您可能会意外注册冗余或无效的计时器(可能是从崩溃中恢复后)。 MongoDB supports (automatic) data expiration。您可以指示MongoDB在经过指定的秒数后删除文档。这似乎已经足够接近您要执行的操作了。