仅在存在键的情况下,将$ push值以猫鼬数组

时间:2018-11-27 12:37:23

标签: javascript node.js mongodb mongoose

我只想推送一个子文档,但前提是更新请求中存在某个键。如果请求中不存在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函数。有没有更清洁的/替代的方法来实现这一目标

1 个答案:

答案 0 :(得分:1)

您可以取消定义

进行检查
var where = '...query'
if (req.key != undefined) {          //Key is exist in request
    where['$push'] = 'Do your stuff'
}