[英]How to avoid overwrite of existing file json object in node
我正在嘗試解決一個問題,即我嘗試使用用戶輸入詳細信息編寫 json 文件。 但是每次我輸入新的細節時,它都會覆蓋現有的數據。
如何避免在 json 文件中覆蓋現有的 json object 並在基於用戶輸入的數組中添加新的 ZA8CFDE6331BD59EB2AC96F8911C4B6?
用戶數據.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");
}
});
為了 append 數據而不是替換它,您可以將a+
標志傳遞給fs.writeFile
:
fs.writeFile('./userdata.json', data, { flag: 'a+' }, (err) => {
if (!err) {
console.log('done');
}
});
如果文件不存在,它將創建文件。 如果文件存在,則將附加內容。
這是骯臟的方法:
fs.readFile('./userdata.json', (err, data) => {
if (err){
console.log(err);
} else {
obj = JSON.parse(data);
obj.push(sendData);
json = JSON.stringify(obj);
fs.writeFile('./userdata.json', json, callback);
}});
每次要添加記錄時,讀取數組 append 並再次轉儲。 但是,請考慮切換到數據庫以避免這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.