【发布时间】:2020-10-30 10:20:57
【问题描述】:
我正在尝试解决一个问题,即我正在尝试编写包含用户输入详细信息的 json 文件。但是每次我输入新的细节时,它都会覆盖现有的数据。
如何避免覆盖 json 文件中现有的 json 对象,而是根据用户输入在数组中添加新对象?
userData.json:
[
{
"name": "Name",
"number": "4334343",
"email": "email@email.com",
"message": "sdsd"
}
]
server.js :-
app.get("/myaction", function (request, response){
var name = request.query.name;
var number = request.query.number;
var email = request.query.email;
var message = request.query.message;
if (name != "") {
response.send("Your name is " + name + "number"+ number + "email"+ email + "message" + message);
const sendData = [{
name:name,
number:number,
email:email,
message:message
}];
fs.stat('./userdata.json', function(err, stat) {
if(err == null) {
console.log('File exists');
} else if(err.code === 'ENOENT') {
// file does not exist
var data = JSON.stringify(sendData,null, 2);
fs.writeFile('./userdata.json', data, (err) => {
if (!err) {
console.log('done');
}
});
} else {
console.log('Some other error: ', err.code);
}
});
} else {
response.send("Please provide info");
}
});
【问题讨论】:
-
fs.appendFile()但您可以省略[ ]。这样,在阅读时您可以解析文件。或者,非常肮脏的做法是读取文件,解析它,将新对象添加到解析的数组中,然后再次转储。 -
请注意 appendFile 除非您正确附加,否则您有可能制作格式错误的 json。例如,如果最后写入的是一个对象
{...},而您附加了另一个对象,那么它最终会像{...}{...}一样,这是格式错误的json。更容易读入、解析、修改和保存。 -
@ParthShah 省略 [] 这种方式意味着什么?我尝试使用 appendFile()。没用
标签: javascript node.js json filewriter