Mongoose不发送更新后的结果

Mongoose does not send the updated result

本文关键字:结果 更新 Mongoose      更新时间:2023-09-26

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

我这样提出我的请求:

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。事实并非如此。将记录"旧"版本。然而,如果我刷新页面,模型会随着新车更新。

当然,我需要直接在回调中设置State。关于如何做到这一点,有什么建议吗?

Mongoose 4已经更改了.findAndUpdate行为,默认情况下返回旧文档,如果您想要更新的新文档,则需要传递{new:true},因为这是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;
};