每天在特定时间自动运行功能

时间:2017-05-27 05:50:06

标签: node.js mongodb elasticsearch redis synchronization

我正在做一个关于CMS系统的学校项目来帮助我操作我的学校网站。它使用3个数据库:

  • MongoDB(主数据库,存储所有信息)
  • Redis(存储网站菜单)
  • Elasticsearch(商店帖子)

目前,当我插入/编辑/删除数据时,我还会插入/编辑/删除相关数据库。但我的导师希望我编写一个功能,让系统在特定时间在这3个数据库之间自动同步数据(用户可以选择何时)。

我的服务器使用Node JS进行操作,这个要求对我来说是新的,以前从未听说过。我的新方法是:

  • 向数据库字段添加1个标志
  • 选择包含flag == true。
  • 的所有行
  • 同步数据

但我不知道如何在特定时间自动运行以上功能。我希望你们能帮助我优化我的新流程并解决同步问题。

谢谢大家!!!

编辑1:改变tittle。

编辑2:我找到了一个来自这个主题的解决方案:Running a function everyday midnight,如果同步数据发生错误,无论如何都要重新运行此功能。像这样:



function syncDataAtMidNight(){
 var now = new Date();
    var night = new Date(
        now.getFullYear(),
        now.getMonth(),
        now.getDate() + 1, // the next day, ...
        0, 0, 0 // ...at 00:00:00 hours
    );
    var msToMidnight = night.getTime() - now.getTime();

    setTimeout(function() {
    // is this a correct way to loop, in case of error when sync ???
        myFunctionSync(err, resp) {
          if(err){
            myFunctionSync();
          } else {
             changeFlagToFalse();
             syncDataAtMidNight();
          }
        }              
    }, msToMidnight);}




1 个答案:

答案 0 :(得分:0)

您应该考虑使用cron,他具有在系统级别的显着优势,他可以获得代码错误返回,并在必要时主要启动/重新启动节点。