猿问

未考虑 NodeJS 的 json 更改

我来找你是因为我正在尝试在 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!');

});

一切正常,它只是将旧文件保存在内存中。


慕斯709654
浏览 122回答 1
1回答

梵蒂冈之花

为了解决这个问题,我通过了我的const database = require('./db.json');let. 然后我集成了 fs 以便我可以清除缓存:setInterval(function() {        delete require.cache[require.resolve('./db.json')]         database = require('./db.json');问题解决了!
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答