如何从 saveAsync 返回 Mongoose 对象?

cyb*_*bat 5 mongoose node.js promise bluebird

我已经承诺 Mongoose 和 Bluebird - 一切似乎都工作正常,除了返回的文档saveAsync()只是普通对象并且缺少方法/虚拟。

order.saveAsync().then(function(order) {
  order.save(); // errors with object has no method 'save'
Run Code Online (Sandbox Code Playgroud)

我使用“保存”作为示例,但似乎没有内置方法或我的自定义方法可用。

我怎样才能得到一个从返回的 Mongoose 对象saveAsync

Esa*_*ija 5

使用多个参数调用保存回调 - 对象和numberAffected. 因此,承诺是通过数组来实现的[object, numberAffected]。(这在3.0中发生了变化)

因此,您可以取消引用数组(手动或获取)、传播或:

 order.saveAsync().then(function(result) {
     var order = result[0];
     return order._id;
 });
Run Code Online (Sandbox Code Playgroud)

使用获取

 order.saveAsync().get(0).then(function(order) {
      return order._id;
 });
Run Code Online (Sandbox Code Playgroud)

使用点差

 order.saveAsync().spread(function(order, numberAffected) {
      return order._id;
 });
Run Code Online (Sandbox Code Playgroud)