FS写入文件破坏了我的json,如何正确地更新一个密钥呢?

时间:2019-02-11 07:39:48

标签: javascript node.js json api

我有一个像这样的简单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验证器中时,它是有效的。所以我很困惑为什么它没有写正确的东西:/

0 个答案:

没有答案