我正在执行猫鼬Model.findById()
函数,以通过使用快速路由返回单个实例。
Model.findById(modelid)
.then(instance => {
if(instance.isOwnedBy(user)) {
return instance.update({$push: {days: req.params.dayid}}, {new: true})
.then(foo => res.send(foo))
} else {
res.status(401).send("Unauthorized")
}
})
上面的代码返回一个包含opTime, electionId...etc
的对象,而不是返回新更新的文档实例。在instance.update()
方法之后,如何返回最新更新的文档?
答案 0 :(得分:1)
如果可以将instance.isOwnedBy(user)
和_id: modelid
合并到一个mongo查询中,则最好使用findOneAndUpdate()
,但是这样一来,如果找不到任何匹配的文档,则无法知道查询的哪一部分导致找不到。
由于我对您的模型,条件不了解太多,所以我无法回答如何使用findOneAndUpdate()
进行操作,但是还有另一种修改文档并调用save()
方法的方法。 / p>
基于您的代码的示例:
Model.findById(modelid)
.then(instance => {
if(instance && instance.isOwnedBy(user)) {
if(instance.days) instance.days.push(req.params.dayid);
else instance.days = [req.params.dayid];
instance.save().then(function(instance){
res.send(instance);
})
} else {
res.status(401).send("Unauthorized")
}
})
注意:修改实例之前,应检查实例是否存在。