我只想推送一个子文档,但前提是更新请求中存在某个键。如果请求中不存在status_value
键,则会添加一个空的子文档,其中仅包含一个_id
字段。
我的更新功能如下
Audit.findByIdAndUpdate(id,
{$set:req, $push: { status: {status_value: req.status_value }} },
{ new: true, runValidators: true })
.lean().exec( function (err, audit) {
if (err) {
console.log(err)
callback(err, null)
}
else if (!audit) {
console.log("update_fucntion user not found")
callback(null, null)
}
else {
console.log('finished update\n\n')
console.log(audit)
callback(null, audit)
}
});
显而易见的选择是放置一个if
子句,但这意味着放置两个Audit.findByIdAndUpdate
函数。有没有更清洁的/替代的方法来实现这一目标
答案 0 :(得分:1)
您可以取消定义
进行检查var where = '...query'
if (req.key != undefined) { //Key is exist in request
where['$push'] = 'Do your stuff'
}