Socket.ioとNode.jsでスコアボードに取り組んでいます。次に、参加者のスコアを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ファイルは次のようになります。
{"jury1": []}
上記のコードを実行すると、スコアが10のときにJSONファイルが「3」に変わります。また、実行後にJSONファイル内のすべてが失われます。
Jury1にキーと値を適切に追加するにはどうすればよいですか? すでにありがとう!
ps:名前とスコアはクライアント側のスクリプトを介して送信されます
回答:
回答№1は0Jury1は配列ですか?
私はあなたがしたいのではなく、あなたが望むすべてのデータを解析する必要があると思います:
JSON.stringify(json.jury1.push({name: score}, null, 2)
次のように試してみてください
jury1 with the score you need
var data = JSON.stringify(jury1)
回答№2の場合は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);
});