需要反复写入数据到json文件中的时候,要以对象数组的方式写入文件中;写入数据时候,数据需要以字符串存入,因此需要使用JSON.stringify();方法来讲数据转成字符串;而从文件中读取数据之后,需要将buff流通过toString()转换成字符串,然后将通过JSON.parse()方法字符串转成对象数组,添加新数据;再重新写入文件;
代码如下:
let data = []; // 文件的内容
let obj = req.query;
// 转成字符串 存入 user.json 文件中
// 如果文件存在 读取数据 fs.existsSync(path)
let pathFile = path.resolve(__dirname, 'user.json');
if (fs.existsSync(pathFile)) {
// 文件存在 读取数据 fs.readFileSync(path[, options])
fs.readFile(pathFile, (err, da) => {
if (err) throw err;
// console.log(da + "2222222222222222222222");
da = da.toString();
if (da != '') {
data = JSON.parse(da);
data.push(obj);
} else {
data.push(obj);
}
// 转成字符串 存入 user.json 文件中
var objStr = JSON.stringify(data);
// 再重新和新的数据一起写入文件中 fs.writeFileSync(file, data[, options])
// json格式写入 以对象数组方式存入
fs.writeFileSync(pathFile, objStr);
});
} else {
// 文件不存在
// 写入数据
// fs.writeFile(file, data[, options], callback)
data.push(obj);
fs.writeFile(path.resolve(__dirname, 'user.json'), JSON.stringify(data), function (err) {
console.log(err);
});
}