如何使用Node.js和Socket.io将密钥+值写入JSON文件

时间:2017-10-19 13:09:31

标签: javascript json node.js socket.io

我正在使用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:名称和分数通过客户端双面脚本发送

2 个答案:

答案 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);
});