为了账号安全,请及时绑定邮箱和手机立即绑定

未考虑 NodeJS 的 json 更改

未考虑 NodeJS 的 json 更改

慕斯709654 2022-11-03 10:20:33
我来找你是因为我正在尝试在 Discord.JS 上执行 foreach 循环来检测 JSON 文件中的更改。我的文件确实更改了内容,但我的 foreach 循环将旧内容保留在内存中。我不知道如何解决这个问题......我的 index.js:const Discord = require('discord.js');const low = require('lowdb')const FileSync = require('lowdb/adapters/FileSync')const fetch = require('node-fetch');const client = new Discord.Client();const config = require('./config.json');const database = require('./db.json');const adapter = new FileSync('./db.json')const db = low(adapter)const prefix = config.prefix;let api = config.api;client.once('ready', () => {    db.defaults({numbers: []})    .write()    setInterval(function() {    database.numbers.forEach(async element => {        let state = await fetch(`some-api-url`).then(response => response.json());        if(state[0].response != element.response){            db.get('numbers')            .find({number: element.number})            .assign({response: state[0].response, sms: state[0].msg})            .write();            let user = element.clientId;            try {                await client.users.cache.get(user).send(`Your message for number ${element.number} is ${element.sms}`);                } catch(error){                 console.log(error)                }        }        });    }, 3000);    console.log('Ready!');});一切正常,它只是将旧文件保存在内存中。
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

为了解决这个问题,我通过了我的const database = require('./db.json');let. 然后我集成了 fs 以便我可以清除缓存:

setInterval(function() { 
      delete require.cache[require.resolve('./db.json')]
        database = require('./db.json');

问题解决了!


查看完整回答
反对 回复 2022-11-03
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号