首页 文章

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

提问于
浏览
0

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

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

Date.now() - voteTmp;

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

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

1 回答

  • 0

    node.js事件循环解释here

    simplified overview of the event loop's order of operations

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


    在每次迭代中,事件循环检查满足指定阈值(延迟)的计划定时器并执行其回调 . 因此,注册计时器的延迟幅度很重要 shouldn't .

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

相关问题