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

问题描述 投票:0回答:1

我正在开发一款应用。这还包括某种群聊。内部用户可以进行多次投票,例如踢人。投票有效期为1周。如果所有其他用户都提交了他们的意见,那么投票就会被删除。太好了。

我还想要一个逻辑,如果它已过期,它会自动删除投票。到目前为止,我有了在数据库(MongoDB)中存储投票的到期日期的想法,按其到期时间戳排序。在NodeJs中,我总是从数据库加载具有最小到期日期的投票。然后我通过从当前日期减去投票截止日期来检查剩余时间

Date.now() - voteTmp;

然后我可以设置一个超时,它会调用一个函数来删除投票并自动开始下一次投票的新超时。设置如此大的秒数超时是一个问题吗?

你有更好的想法吗?谢谢:)

node.js mongodb timeout setinterval
1个回答
0
投票

事件循环解释here

simplified overview of the event loop's order of operations

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


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

但是,在您的方案中,您可能会意外地注册冗余或无效的计时器(可能在从崩溃中恢复之后)。 MongoDB supports (automatic) data expiration。您可以指示MongoDB在经过指定的秒数后删除文档。这看起来足够接近你想做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.