猫鼬不发送更新的结果[重复]

Posted

技术标签:

【中文标题】猫鼬不发送更新的结果[重复]【英文标题】:Mongoose does not send the updated result [duplicate] 【发布时间】:2016-02-04 07:37:06 【问题描述】:

我正在尝试向数组中添加一个项目并取回更新后的模型。

我这样提出我的要求:

addCarToDriver(CarToAdd) 
 const self = this;
    request
       .put('api/drivers/' + this.state.race._id)
       .send(
        car: CarToAdd)
       .end(function(err, res) 
         console.log(res.body);
        self.setState(race: res.body);
       );

它在这里访问服务器:

MyRace.findByIdAndUpdate(
             req.params.myrace_id,
              $push:  'cars': req.body.car   ,
             function(er, model) 
             if (er) 
               console.log(err);
               return res.send(err);
              
              console.log(model);
              return res.json(model);
            );

现在在请求回调中,我希望新的更新模型能够被记录,即使用新的Car。它不是。 “旧”版本被记录。但是,如果我刷新页面,模型就会更新为新车。

当然我需要直接在回调中设置状态。有关如何执行此操作的任何提示?

【问题讨论】:

【参考方案1】:

Mongoose 4 has changed.findAndUpdate 行为默认返回旧文档,如果你想要新的更新你需要通过new:true, because that was the actual behavior in MongoDB

您可以修补查询以设置 options.new=true 以使用旧方法:

var __setOptions = mongoose.Query.prototype.setOptions;
mongoose.Query.prototype.setOptions = function(options, overwrite) 
  __setOptions.apply(this, arguments);
  this.options['new'] = true;
  return this;
;

【讨论】:

以上是关于猫鼬不发送更新的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬不按名称识别集合[重复]

为啥猫鼬不更新?

猫鼬不保存对象数组

猫鼬:更新字段,将对象推送到数组中[重复]

猫鼬不创建文档

猫鼬不等待在回调中传递文档