我正在开发一款应用 . 这还包括某种群聊 . 内部用户可以进行多次投票,例如踢人 . 投票有效期为1周 . 如果所有其他用户都提交他们的意见,那么投票就会被删除 . 太好了 .
我还想要一个逻辑,如果它已过期,它会自动删除投票 . 到目前为止,我有了在数据库(MongoDB)中存储投票的到期日期的想法,按其到期时间戳排序 . 在NodeJs中,我总是从数据库加载具有最小到期日期的投票 . 然后我通过从当前日期减去投票截止日期来检查剩余时间
Date.now() - voteTmp;
然后我可以设置一个超时,它会调用一个函数来删除投票并自动开始下一次投票的新超时 . 设置如此大的秒数超时是一个问题吗?
你有更好的想法吗?谢谢:)
1 回答
node.js事件循环解释here:
在每次迭代中,事件循环检查满足指定阈值(延迟)的计划定时器并执行其回调 . 因此,注册计时器的延迟幅度很重要 shouldn't .
但是,在您的方案中,您可能会意外地注册冗余或无效的计时器(可能是在从崩溃中恢复之后) . MongoDB supports (automatic) data expiration . 您可以指示MongoDB在经过指定的秒数后删除文档 . 这看起来足够接近你想做的事情 .