我正在使用Socket.io和Node.js编写记分板。现在我想将参与者的分数保存到JSON文件中。
这就是我试图做的事情:
for i in {000..999}; do cp 0x4f0DAA112142FFC4BA1B9f3B76bcd238A094D65B "0x4f0DAA112142FFC4BA1B9f3B76bcd238A094D65B_$i" ; done
我的JSON文件如何:
socket.on('part score', function(name, score){
let jdata = fs.readFileSync('participants.json');
let json = JSON.parse(jdata);
console.log(name, score);
//outputs: foo 10
fs.writeFile('participants.json', JSON.stringify(json.jury1.push({name: score}, null, 2)), function(){
console.log("name added: "+name+" value added: "+score);
});
});
当我执行上面的代码时,我的JSON文件在得分为10时变为“3”。我的JSON文件中的所有内容在执行后都消失了。
如何将键+值正确添加到我的Jury1中?
谢谢!
ps:名称和分数通过客户端双面脚本发送
答案 0 :(得分:0)
Jury1是一个数组?
我认为您应该解析所需的所有数据而不是:
JSON.stringify(json.jury1.push({name: score}, null, 2)
尝试类似:
jury1 with the score you need
var data = JSON.stringify(jury1)
答案 1 :(得分:0)
您已有一个json文件。你为什么再次做一个JSON.parse?我怀疑这是问题所在。你能尝试打印json.jury1的内容来确认吗?
另外,如果有任何错误
,请检查fs.writeFile()的结果fs.writeFile('participants.json', JSON.stringify(json.jury1.push({name: score}, null, 2)), function(err){
console.log(err, "name added: "+name+" value added: "+score);
});