首页 > 解决方案 > 用猫鼬更新文档——一个属性没有被更新?

问题描述

我有以下代码可以更新 MongoDB 中的文档:

exercisesRouter.put('/:exerciseId', async (req, res) => {
  try {
    await mongoose.connect('mongodb+srv://nalanart:password@cluster0.2iplh.mongodb.net/workout-app-db?retryWrites=true&w=majority', 
    { useNewUrlParser: true, useUnifiedTopology: true })

    await Exercise.findByIdAndUpdate(req.params.exerciseId, {
      name: req.body.name,
      sessionOne: req.body.sessionOne,
      sessionTwo: req.body.sessionTwo,
      weight: req.body.weight,
      failCount: req.body.failCount,
      reps: req.body.reps
    })

    res.sendStatus(204)

  } catch(error) {
    throw error
  }
})

问题是,当我使用 Postman 对其进行测试时,它会正确更新所有内容,但 'reps' 属性除外。这是我放入 Postman 的 JSON 正文:

{
    "name": "deadlift",
    "sessionOne": {
        "setsRegular": 4,
        "repsRegular": 5,
        "setsAmrap": 1,
        "repsAmrap": 5
    },
    "sessionTwo": {
        "setsRegular": 0,
        "repsRegular": 0,
        "setsAmrap": 0,
        "repsAmrap": 0
    },
    "weight": 145,
    "failCount": 2,
    "reps": [5, 5, 5, 4, 4]
}

此图为发出 put 请求后的文档(通知 reps,之前的 [5, 5, 5, 5, 5] 没有更新为 [5, 5, 5, 4, 4]

放置请求后的 MongoDB 文档

我真的对此感到非常困惑,我觉得这是我的代码中的一个小错字,我必须忽略或者可能与它是一个数组有关?任何帮助表示赞赏

标签: mongodbexpressmongoose

解决方案


推荐阅读