我有一個PUT路由來更新值。我從兩個地方打這條路線。一個是發送有關詳細信息和一個約完成的信息。問題是貓鼬正在更新攤位,即使它只從一箇中獲得價值。貓鼬只更新已更改的值
因此,如果我發送有關完成的信息,它是真的,後者我用新的細節(沒有完成的價值)擊中這條路線,它會更新完成也是錯誤的。我如何只更新已更改的值?
router.put('/:id', (req, res) => {
Todo.findOne({_id:req.body.id}, (err, foundObject) => {
foundObject.details = req.body.details
foundObject.completed = req.body.completed
foundObject.save((e, updatedTodo) => {
if(err) {
res.status(400).send(e)
} else {
res.send(updatedTodo)
}
})
})
})
編輯: 感謝傑克遜暗示我設法做這樣。
router.put('/:id', (req, res) => {
Todo.findOne({_id:req.body.id}, (err, foundObject) => {
if(req.body.details !== undefined) {
foundObject.details = req.body.details
}
if(req.body.completed !== undefined) {
foundObject.completed = req.body.completed
}
foundObject.save((e, updatedTodo) => {
if(err) {
res.status(400).send(e)
} else {
res.send(updatedTodo)
}
})
})
})
如果要更新的文件,[更新](http://mongoosejs.com/docs/api.html#model_Model.update)它,不要保存它。 –