我有一个像这样的简单json对象。
{
"gymData": {
"previousWorkouts": [
],
"exercises": [
]
}
}
上面的两个数组都充满了对象。我有两个端点/workouts
和/exercises
。
我的后端只是一个具有自定义端点的简单快递服务器。当我在前端添加新锻炼并单击提交时,/workouts
端点的行为正确。
但是,当它没有正确更新json并导致json错误时,我遇到了一些问题。
这是我的节点端点代码
app.post("/exercises", function(req, res) {
fs.readFile('db.json', 'utf8', function (err, data) {
if (err) throw err;
let databaseData = JSON.parse(data);
const workoutExercises = req.body.workoutExercises.workouts
workoutExercises.forEach(exercise => {
const filteredExerciseDatabase = databaseData.gymData.exercises.filter(ex => ex.name === exercise.name)
filteredExerciseDatabase[0].previousWeights.push({date: req.body.date, weight: exercise.weight})
})
const updatedData = JSON.stringify(databaseData)
console.log(updatedData)
fs.writeFile('db.json', updatedData, 'utf8', function(err, data) {
if (err) throw err;
res.status(200).send("Basket was updated");
});
});
})
而不是再次写入整个文件。我想知道是否也可以更新我需要的特定对象键?
另外,作为参考,该错误似乎是在json对象上添加了额外的内容,因此它正在崩溃。但在这一行中:console.log(updatedData)
当我将记录的数据复制到json验证器中时,它是有效的。所以我很困惑为什么它没有写正确的东西:/