这是我的代码,它将从邮递员那里获取数据并写入文件,但是在写入文件时会替换现有数据,以解决此代码问题。
app.post('/postUser', function (req, res) {
req.on('data', function (data) {
console.log(data.toString());
fs.writeFile('test.json', data, function (err) {
if (!err) {
console.log("Finished writing")
}
});
});
});
我的输出应该是这样。
[
{
"name":"Alpha",
"password":"123",
"id": 1
},
{
"name":"beta",
"password":"123",
"id": 2
}
]
当我使用appendFile时,我将得到如下输出:
[
{
"name": "alpha",
"password": "123",
"id": 4
}
] {
"name": "sdad",
"password": "123",
"id": 4
}
答案 0 :(得分:0)
app.post("/postUser", function(req, res) {
req.on("data", function(data) {
var newData;
fs.readFile("test.json", function(readErr, fileData) {
if (readErr) {
console.error(readErr);
}
newData = JSON.parse(fileData).push(data);
fs.writeFile("test.json", newData, function(writeErr) {
if (writeErr) {
console.error(writeErr);
}
console.log("Finished writing!");
});
});
});
});
我通常会解决此问题的方法是读取现有数据,然后将您的新数据(push
)添加到现有数据中并写入结果
答案 1 :(得分:0)
如果文件中存在数据,writeFile
方法将只替换数据;如果不存在,则会创建一个文件并将数据写入其中。
使用appendFile
方法代替fs.writFile将任何数据附加到文件中。
app.post('/postUser', function (req, res) {
req.on('data', function (data) {
console.log(data.toString());
fs.appendFile('test.json', data, function (err) {
if (!err) {
console.log("Finished writing")
}
});
});
});
答案 2 :(得分:0)
首先读取文件,然后将所做的更改附加到文件中,然后再次写入。
app.post('/postUser', function (req, res) {
req.on('data', function (data) {
fs.readFile('test.json', 'utf8', function(err, file){
//handle error
if(!file) {
var file = '';
}
var temp = JSON.parse(file);
temp.push(data);
fs.writeFile('test.json', temp, function (err) {
//handle error
console.log("FILE STORED")
});
})
});
});