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

Posted

技术标签:

【中文标题】如何从 saveAsync 返回一个 Mongoose 对象?【英文标题】:How to return a Mongoose object from saveAsync? 【发布时间】:2015-04-14 04:34:42 【问题描述】:

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

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

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

如何获取从saveAsync 返回的 Mongoose 对象?

【问题讨论】:

这行得通吗? var orderObj= new Order(order); orderObj.save(); 【参考方案1】:

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

因此您可以取消引用数组(手动或获取)、展开或:

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

使用获取

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

使用传播

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

【讨论】:

以上是关于如何从 saveAsync 返回一个 Mongoose 对象?的主要内容,如果未能解决你的问题,请参考以下文章

无法得到我在 nodejs / mongoose / bluebird 中返回的承诺

mongoose基本增删改查

猫鼬没有加入两个系列

将 Async/Await 响应保存在变量上

如何仅查看猫鼬中值的第一个字母来查找所有文档

next() 承诺错误处理