2015-02-13 4 views
4

Я обещал Mongoose с Bluebird - все, кажется, работает отлично, за исключением того, что документы, возвращенные saveAsync(), являются просто простыми объектами и не имеют методов/виртуальных.Как вернуть объект Mongoose из saveAsync?

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

Я использую «save» в качестве примера, но не встроенный метод или мои собственные методы, похоже, доступны.

Как я могу получить объект Mongoose, возвращенный с saveAsync?

+0

ли эта работа? 'var orderObj = новый заказ (заказ); orderObj.save(); ' – BatScream

ответ

4

Обратный вызов сохранения вызывается с несколькими аргументами - объектом и 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; 
}); 
Смежные вопросы