我正在尝试创建一个函数,当调用该函数时将更新 json 文件中的特定对象。但是,它会更新对象并创建一个新对象。
我尝试了许多不同的方法来尝试让它发挥作用,但都失败了。我最接近它的工作是下面显示的代码,但它仍然没有完成所需的工作。
这是我的功能:
var fs = require('fs');
var _ = require("underscore");
module.exports = {
personalUpdate: function (id, forename, surname, dob, gender, callback) {
let rawdata = fs.readFileSync('data.json');
let data = JSON.parse(rawdata);
let filtered = _.where(data['students'], { id: id });
let all = filtered[0];
all.forename = forename;
all.surname = surname;
all.dob = dob;
all.gender = gender;
data["students"].push(all);
fs.writeFileSync('data.json', JSON.stringify(data, null, 2), (err) => {
if (err) throw err;
});
callback("success");
}
}
这是我要更新的 JSON 文件:
{
"teachers": [
{
"name": "",
"email": "",
"password": "",
"formGroup": "",
"id": ""
}
],
"students": [
{
"surname": "test",
"forename": "test",
"dob": "",
"homeAddress": "",
"homePhone": "",
"gender": "",
"tutorGroup": "",
"schoolEmail": "",
"grades": [
{
"french": 8,
"maths": 7
}
],
"id": ""
},
{
"surname": "test2",
"forename": "test2",
"dob": "",
"homeAddress": "test2",
"homePhone": "",
"gender": "",
"tutorGroup": "",
"schoolEmail": "",
"grades": [
{
"french": 9,
"maths": 8
}
],
"id": ""
}
]
}
我不得不删除和更改其中的对象和信息,因为它包含机密信息。
运行此函数时,它会查找参数中指定的对象。然后它更新该对象,但它随后在原始 JSON 对象的底部创建另一个对象,这是不应该的。
另外,有没有更好的方法来更新 JSON 文件中的特定对象?
qq_花开花谢_0
相关分类