所需 JSON 文件具有 运行 程序之前的旧值
Required JSON file has old values from before running the program
我正在使用 javascript (discord.js) 编写一个不和谐的机器人。
我使用 json 个文件来存储我的数据,当然总是需要最新的数据。
我执行以下步骤:
- 我启动了机器人
- 我运行一个函数,每次发送消息时都需要config.json文件
- 我增加了用户从他发送的消息中获得的 xp
- 我在config.json
更新用户xp
- 我记录数据
所以现在在第一次登录后(也就是发送第一条消息)我在启动机器人之前得到了 json 文件中的数据(有意义)。但是在发送第二条消息后,我希望 xp 值比之前更高,因为数据应该已经更新,文件新加载并再次记录数据。
(是的,我每次都更新文件。当我自己查看文件时,数据总是最新的)
那么第二次请求文件后没有更新的原因是什么?是否要求不重新加载文件?
这是我的代码:
function loadJson() {
var jsonData = require("./config.json")
//here I navigate through my json file and end up getting to the ... That won't be needed I guess :)
return jsonData
}
//edits the xp of a user
function changeUserXP(receivedMessage) {
let xpPerMessage = getJsonData(receivedMessage)["levelSystemInfo"].xpPerMessage
jsonReader('./config.json', (err, data) => {
if (err) {
console.log('Error reading file:',err)
return
}
//increase the users xp
data.guilds[receivedMessage.guild.id].members[receivedMessage.author.id].xp += Number(xpPerMessage)
data.guilds[receivedMessage.guild.id].members[receivedMessage.author.id].stats.messagesSent += 1
fs.writeFile('./test_config.json', JSON.stringify(data, null, 4), (err) => {
if (err) console.log('Error writing file:', err)
})
})
}
client.on("message", (receivedMessage) => {
changeUserXP(receivedMessage)
console.log(loadJson(receivedMessage))
});
希望代码对您有所帮助:)
如果我的问题不够准确或者您还有其他问题,请随时发表评论
感谢您的帮助<3
这是因为require()
只读取文件一次并缓存它。为了再次读取同一个文件,你应该先从 require.cache
中删除它的键(键是文件的路径)
我正在使用 javascript (discord.js) 编写一个不和谐的机器人。
我使用 json 个文件来存储我的数据,当然总是需要最新的数据。
我执行以下步骤:
- 我启动了机器人
- 我运行一个函数,每次发送消息时都需要config.json文件
- 我增加了用户从他发送的消息中获得的 xp
- 我在config.json 更新用户xp
- 我记录数据
所以现在在第一次登录后(也就是发送第一条消息)我在启动机器人之前得到了 json 文件中的数据(有意义)。但是在发送第二条消息后,我希望 xp 值比之前更高,因为数据应该已经更新,文件新加载并再次记录数据。
(是的,我每次都更新文件。当我自己查看文件时,数据总是最新的)
那么第二次请求文件后没有更新的原因是什么?是否要求不重新加载文件?
这是我的代码:
function loadJson() {
var jsonData = require("./config.json")
//here I navigate through my json file and end up getting to the ... That won't be needed I guess :)
return jsonData
}
//edits the xp of a user
function changeUserXP(receivedMessage) {
let xpPerMessage = getJsonData(receivedMessage)["levelSystemInfo"].xpPerMessage
jsonReader('./config.json', (err, data) => {
if (err) {
console.log('Error reading file:',err)
return
}
//increase the users xp
data.guilds[receivedMessage.guild.id].members[receivedMessage.author.id].xp += Number(xpPerMessage)
data.guilds[receivedMessage.guild.id].members[receivedMessage.author.id].stats.messagesSent += 1
fs.writeFile('./test_config.json', JSON.stringify(data, null, 4), (err) => {
if (err) console.log('Error writing file:', err)
})
})
}
client.on("message", (receivedMessage) => {
changeUserXP(receivedMessage)
console.log(loadJson(receivedMessage))
});
希望代码对您有所帮助:)
如果我的问题不够准确或者您还有其他问题,请随时发表评论
感谢您的帮助<3
这是因为require()
只读取文件一次并缓存它。为了再次读取同一个文件,你应该先从 require.cache