【问题标题】:node.js emit event after certain timenode.js 在一定时间后发出事件
【发布时间】:2016-08-21 17:07:21
【问题描述】:

我有一个数据库,其中插入了带有时间戳的数据。一旦此时间戳比当前时间早 24 小时以上,我希望发出一个事件,导致数据因过期而被删除。

如何做到这一点?我正在运行一个 http 服务器,所以我无法承受不断的检查,因为它会减慢每个请求的速度,并且如果积累了大量信息,则检查每个请求都需要很长时间。如果可能的话,我还想避免生成子进程。

有什么想法吗?

【问题讨论】:

    标签: javascript node.js events timeout eventemitter


    【解决方案1】:

    你想从数据库中删除数据,为什么不使用 crontab?

    【讨论】:

    • 因为我用的是MongoDB所以不能直接干扰数据库文件,而是需要通过mongo客户端界面来做。
    【解决方案2】:

    您可以使用node-schedule 安排作业(任意函数)在特定日期执行。

    例如,以下代码会在函数被调用后 24 小时内运行:

    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.');
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多