【发布时间】:2021-07-11 11:54:54
【问题描述】:
问题是,当我尝试保存从使用 nodejs 中的 socket.io 创建的聊天室获取的数据时,一旦用户将消息提交到聊天室,该文件就会不断被覆盖。但是我希望将用户名 + 消息添加到文件中而不是覆盖它,因此用户名和消息都将作为对象存储到 JSON 文件中。
这是我一开始尝试的:
socket.on('send-chat-message', message => {
socket.broadcast.emit('chat-message',{ message: message, name: users[socket.id] })
var collect = {
message: message,
name: users[socket.id]
}
var savechatData = JSON.stringify(collect)
fs.writeFile('./public/static/chattingdata/chat.json', savechatData, function (error) {
if (error) {
console.log("There has been an error saving your configuration data")
console.log(error.message)
return
}
console.log('Configuration saved succesfully')
})
})
})
但这只会覆盖它。于是我就这样尝试了:
socket.on('send-chat-message', message => {
socket.broadcast.emit('chat-message',{ message: message, name: users[socket.id] })
var collect = {
message: message,
name: users[socket.id]
}
var savechatData = JSON.stringify(collect)
fs.writeFile('./public/static/chattingdata/chat.json', {'flags': 'a'}, savechatData, function (error) {
if (error) {
console.log("There has been an error saving your configuration data")
console.log(error.message)
return
}
console.log('Configuration saved succesfully')
})
})
})
然后我得到错误:'ERR_INVALID_OPT_VALUE_ENCODING'
那么我该如何解决这个问题呢?
【问题讨论】:
标签: javascript node.js socket.io