NodeJs - Bluebird promise.resolve(value) 未定义

NodeJs - Bluebird promise.resolve(value) is undefined

我有一个使用 mongoose 创建对象的服务方法,我正试图将其从回调重写为 promises:

var Booking = require("../models/booking");
var Promise = require('bluebird');
var notificationEmitter = require('../events/notificationEmitter').NotificationEmitter;

exports.createBooking = function(/* many arguments */){

var booking = new Booking();

... omitted details of adding to booking object...

booking.save().then(function(booking){
    notificationEmitter.emit('createdBooking', booking);
    return Promise.resolve(booking);
}).catch(function(err){
    return Promise.reject(err);
});
};

在我的单元测试中:

 bookingService.createBooking(/* all the required values */)
     .then(function(booking){
         assert.notEqual(booking, null);
         done();
     }).catch(function(err){
        console.log(err);
        assert.fail();
        done();
     });

但是我一直收到错误消息:

TypeError: Cannot call method 'then' of undefined   

来自我的单元测试。我已经调试过了,最后一行是

return Promise.resolve(booking);

为什么我没有收到承诺?

因为您没有从 createBooking 返回任何值。更改为:

exports.createBooking = function(/* many arguments */){

var booking = new Booking();

// other code, and:

return booking.save().then(function(booking){
//^^^^ return here


    notificationEmitter.emit('createdBooking', booking);
    return Promise.resolve(booking);
}).catch(function(err){
    return Promise.reject(err);
});
};