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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodeJs,处理用户投票的到期日期相关的知识,希望对你有一定的参考价值。

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

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

Date.now() - voteTmp;

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

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

答案

事件循环解释here

simplified overview of the event loop's order of operations

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


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

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

以上是关于NodeJs,处理用户投票的到期日期的主要内容,如果未能解决你的问题,请参考以下文章

php获取日期-1个月

设置cookie到期日期到今天js

如何使用 Yesod 正确处理 JWT 的到期日期?

Google API:如何增加访问令牌到期日期?

我们是不是应该在很大程度上基于本地 jwt 令牌到期日期来验证用户

从验证收据中检查自动续订订阅到期日期