node.js - 每日特定时间自动运行功能

标签 node.js mongodb elasticsearch redis synchronization

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

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

目前我在插入/编辑/删除数据时,也会插入/编辑/删除到相关的数据库中。但是我的导师要我写一个函数,让系统在特定时间(用户可以选择时间)在这 3 个数据库之间自动同步数据。

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

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

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

谢谢大家!!!

编辑 1:更改标题。

编辑 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);}

最佳答案

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

关于node.js - 每日特定时间自动运行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44213414/

相关文章:

node.js - 如何在服务器端呈现的 React 应用程序中构造多个 HTTP 请求?

java - 如何使用 jax-rs 和 mongo 在 Java Web 应用程序中更快地访问数据库

mongodb - 搜索文档 : pymongo 的 ObjectId

mongodb - 将ElasticSearch与MongoDB数据库集成

node.js - 如何将 postman 中的 include_type_name 设置为 true

elasticsearch - 如何使用 Elasticsearch 对文本字段进行排序

elasticsearch - 如何使用Logstash解析日志

node.js - 保存时Docker Nodemon未启动

javascript - 使用 Node.js 接收 json 数据并写入文件的正确方法

node.js+mongodb 无法链接数据库(控制台错误)