如何从saveAsync返回一个Mongoose对象?

时间:2015-02-13 07:22:11

标签: node.js mongoose promise bluebird

我已经用Bluebird宣传了Mongoose - 除了saveAsync()返回的文件只是普通对象并且缺少方法/虚拟内容之外,一切似乎都运行良好。

order.saveAsync().then(function(order) {
  order.save(); // errors with object has no method 'save'

我正在使用' save'作为一个例子,但似乎没有内置方法或我的自定义方法。

如何从saveAsync返回一个Mongoose对象?

1 个答案:

答案 0 :(得分:4)

使用多个参数调用save回调 - 对象和numberAffected。因此,使用数组[object, numberAffected]来实现承诺。 (这在3.0中有所变化)

所以你可以取消引用数组(手动或获取),传播或:

 order.saveAsync().then(function(result) {
     var order = result[0];
     return order._id;
 });

使用get

 order.saveAsync().get(0).then(function(order) {
      return order._id;
 });

使用传播

 order.saveAsync().spread(function(order, numberAffected) {
      return order._id;
 });