在节点中的cron作业中将数据持久化在JSON文件中

问题描述

我希望有人可以帮助我解决遇到的问题。我有一个CRA应用程序,其中包含一个具有多个下拉列表的表。这些下拉菜单的值会经常更改,并且会根据我从API获得的数据进行填充。

问题在于此API的运行速度很慢,所以我的主要想法是仅使用cron在后端(节点/ express服务器)中每隔几个小时检查一次更改,请使用fs.writeFile将API响应写入到.JSON文件,然后在用户访问该应用程序时将该文件发送到前端。

在我的server.js文件中,请执行以下操作:

var CronJob = require("cron").CronJob;

var job = new Cronjob(
    "0 0 */2 * * *",function () {
         apiFunction()
    },null,true,"America/Los_Angeles"
);

job.start();

apiFunction()脚本如下:

   function apiFunction() {
        axios
          .get("https://www.myapi.com/path",{
             params: {
                 // Some params
             }
           }).then( (response) => {
              const resData = JSON.stringify(response.data);
              fs.writeFile(__dirname + "/path/to/file",resData,"utf8",(error) => {
                   if (error) {
                     console.log(error);
                     return;
                   }
                   console.log("file created");
              }
            })
            .catch (error) {
              console.log(error)
            }
   }

在本地主机上开发时,这些脚本可以完美地工作。但是,当我将它们上载到服务器(公司内部网上的内部实例)时,其值永远不会改变。我可以看到该函数正在日志中被调用

我怀疑我可能会误解该数据的持久性。我本以为可以避免使用数据库,因为我对它们的经验还不多。

任何帮助或澄清将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)