findByIdAndUpdate发出空错误

时间:2017-08-06 20:24:39

标签: javascript node.js mongoose

所以我有这个API方法:

router.delete('/circleAlertDelete/:id', function(req, res, next){
  User.findOne({_id: req.params.id}).then(function(user){
    var userTemp = user;
    var alerts = user.circleAlerts;
    var i = 0;
    for(i=0; i<alerts.length; i++){
      if(alerts._id == req.body.alertID){
        alerts.splice(i,1);
      }
    }
    userTemp.circleAlerts = alerts;
    console.log(req.params.id);
    User.findByIdAndUpdate({'_id': req.params.id}, userTemp, function(err, user){
      console.log("error:",err);
      res.send(user);
    });
  }).catch((err) => console.error(err));
});

我也试过这个无济于事:

{'_id': mongo.ObjectId(req.params.id)}

运行时,使用console.log(req.params.id);打印的ID是数据库中用户的ID。

但也打印了error: null

无法解决这个问题,谢谢Ed。

2 个答案:

答案 0 :(得分:1)

尝试仅使用您要设置为findByIdAndUpdate的字段传递普通对象:

User.findByIdAndUpdate(req.params.id, {circleAlerts: alerts}, function(err, user) {

有效地转为以下更新操作:

$set: { circleAlerts: alerts }}

答案 1 :(得分:-1)

您没有指定如何更新文档,只是传递新对象。试试

User.findByIdAndUpdate({_id: req.params.id}, {$set: userTemp}, function(err, user){
   console.log("error:",err);
   res.send(user);
});