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?"} ] 

在这种情况下,您需要使用的逻辑是:

  1. 从文件读取数据
  2. 将数据parsing为JSON并分配给variables
  3. 如果发生错误,请将空数组分配给该variables
  4. push消息对象推到数组的末尾
  5. 将数组串起来
  6. 用新string覆盖文件