【问题标题】:Continuously check whether or not a date has been expired持续检查日期是否已过期
【发布时间】:2017-05-31 08:12:07
【问题描述】:

这是我们的场景:

我们正在为我们的 Web 应用程序使用带 express 的节点,我们需要创建一个后台进程来持续检查多个帖子的创建日期以及它们何时过期。这些过期日期由用户设置,因此帖子以不同的速率过期。当日期到期时,我们的应用应该会触发特定事件。

我们正在考虑使用“setInterval”,但不确定这是否是最佳的长期解决方案。

是否有让节点不断检查日期是否已过期的解决方案?过期后,帖子必须触发特定功能。

【问题讨论】:

标签: javascript node.js mongodb express web-applications


【解决方案1】:

我不确定你的代码,但如果你能在用户发布时捕捉到事件,那么简单的方法就是

setTimeout(whateverYouHaveTodo, expireTimeInMilliseconds);

每次触发事件。

如果您将来需要取消超时,我个人所做的就是将超时放入一个 json 对象中,并将键作为唯一 id,您可以专门识别事件

【讨论】:

  • 您好 Leandro,感谢您的回复,但当我提到多个帖子时,我说的可能是 1000 多个帖子,这使我们认为您的解决方案无法扩展。我将编辑我的问题。谢谢!
【解决方案2】:

有两种方法可以做到这一点:

1) 像这样使用时刻库​​:

var date = moment("2013-03-24")
var now = moment();

if (now > date) {
   // date is past
} else {
   // date is future
}

2) 像这样使用节点调度:

var schedule = require('node-schedule');
var futureDate = new Date(new Date().getTime() + 60 * 60 * 24 * 1000); // This is 24 hours from *now*

var j = schedule.scheduleJob(futureDate, function(){
  console.log('Do your work here.');
});

【讨论】:

    猜你喜欢
    • 2010-10-26
    • 2017-09-13
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多