【发布时间】:2019-05-31 09:29:29
【问题描述】:
我已经使用 NodeJS 的 fs.createReadStream() 从文件中提取了 json,现在我发现很难将数据写回文件中(已经解析然后适当地进行字符串化)。
我正在开发的 Discord-Bot 删除文本频道,然后“重新创建”它们(具有相同的标题)以清除聊天 - 它动态获取频道 ID 并将它们放入文件中,直到频道被删除。 但是,文件写入过程最终会出错。
这是我的第一次尝试:
let channels_json = fs.createReadStream()
//let channels_json = fs.readFileSync(`${__dirname}\\..\\json\\channels.json`);
let obj = (JSON.parse(channels_json)).channelsToClear;
let i = 0;
obj.forEach(id => {
i++;
if(id === originalId){
obj[i] = channela.id;
}
});
obj += (JSON.parse(channels_json)).infoChannel;
obj += "abc";
json = JSON.stringify(obj);
channels_json.write(json);
这是我的第二次:
let id_to_replace = message.guild.channels.get(channels[channel]).id;
//let channels_json = fs.readFileSync(`${__dirname}\\..\\json\\channels.json`);
let obj;
let channels_json = fs.createReadStream(`${__dirname}\\..\\json\\channels.json`,function(err,data){
if (err) throw err;
obj = JSON.parse(data);
if (obj["channelsToClear"].indexOf(id_to_replace) > -1) {
obj["channelsToClear"][obj["channelsToClear"].indexOf(id_to_replace)] = channela.id;
//then replace the json file with new parsed one
channels_json.writeFile(`${__dirname}\\..\\json\\channels.json`, JSON.stringify(obj), function(){
console.log("Successfully replaced channels.json contents");
});
//channels_json.end();
}
});
最终结果是使用新的频道 ID 更新 json 文件中的“channelsToClear”数组。控制台/节点输出各不相同,所有这些都与“使用选项对象创建通道”或“Buffer.write”(均不相关)有关 - json 文件保持不变..
【问题讨论】:
标签: javascript node.js json fs