Nodejs将json写入文件
我刚开始学习nodejs。 我目前正在使用套接字和聊天程序。
我想保存整个聊天到一个json文件。 目前我的代码是这样的:
socket.on('chat', function (data) { message = {user : data.message.user, message : data.message.message}; chat_room.sockets.emit('chat', {message: message}); jsonString = JSON.stringify(message); fs.appendFile("public/chat.json", jsonString, function(err) { if(err) { console.log(err); } else { console.log("The file was saved!"); } }); });
这是目前正在完善,但是在文件中写入的JSON是错误的。
这给了我一个错误的JSON
{"user":"niraj","message":"hw ru?"}{"user":"ntechi","message":"hello"}{"user":"ntechi","message":"hw ru?"}
上述代码在消息触发时被调用。 我想要这种格式的JSON
{"user":"awd","message":"hw ru?","user":"ntechi","message":"hello","user":"ntechi","message":"hw ru?"}
任何人都可以帮助我吗? 提前致谢
第一组错误的JSON被创build,因为您每次收到一条消息时都会将一段JSON添加到文件中。
第二组JSON也是错误的 – 每个属性名称必须是唯一的。
大概你想要的东西是这样的:
[ {"user":"niraj","message":"hw ru?"}, {"user":"ntechi","message":"hello"}, {"user":"ntechi","message":"hw ru?"} ]
在这种情况下,您需要使用的逻辑是:
- 从文件读取数据
- 将数据parsing为JSON并分配给variables
- 如果发生错误,请将空数组分配给该variables
-
push
消息对象推到数组的末尾 - 将数组串起来
- 用新string覆盖文件