javascript - 如何避免覆盖节点中现有的文件 json 对象
问题描述
我正在尝试解决一个问题,即我试图编写一个包含用户输入详细信息的 json 文件。但是每次我输入新的细节时,它都会覆盖现有的数据。
如何避免覆盖 json 文件中现有的 json 对象,而是根据用户输入在数组中添加新对象?
用户数据.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");
}
});
解决方案
为了附加数据而不是替换它,您可以将a+
标志传递给fs.writeFile
:
fs.writeFile('./userdata.json', data, { flag: 'a+' }, (err) => {
if (!err) {
console.log('done');
}
});
如果文件不存在,它将创建文件。如果文件存在,则将附加内容。
推荐阅读
- php - 与支付网关联系时延迟 PHP 代码一段时间
- node.js - 无法在 Strapi 项目中添加项目
- javascript - 用于显示和隐藏 html div 的 javaScript 函数不起作用
- python - 我需要显示所有可能的原始价格和最终价格
- c# - 使用构造函数在 swagger 中设置属性
- ember.js - 无法访问 Ember 中的会话数据(JWT 令牌数据)
- html - HTML锚电话标签格式
- php - 运行作曲家更新时出现内存错误
- apache-spark - 我正在尝试使用 kafka 开发 spark 应用程序,但我得到一个 cNoClassDefFoundError
- android - 获取 Json 后无法刷新列表视图