承诺不会从续集模型实例方法返回

时间:2015-02-21 08:32:47

标签: javascript node.js express sequelize.js

每当我调用我的实例方法时,都不会返回promise。相反,它总是undefined

// user model
    ...
    instanceMethods: {
        verifyPassword: function(password, done) {
            return bcrypt.compare(password, this.password, function(err, res) {
                return done(err, res);
            });
        }
    },

测试:

models.user.find(1).then(function(user) {
    return user.verifyPassword(password, function(error, result) {
        if(result)
            return models.item.create(....);
    });
}).catch(function(e) {
    console.log(e);
});

现在,如果用户输入有效密码但item.create()失败,则错误不会传播回外部catch()块。相反,程序失败了:

Possibly unhandled SequelizeValidationError: Validation error

问题在于verifyPassword()不知何故没有返回承诺。如果我删除验证,那么一切都会起作用;然后,所有错误都会记录在catch()

为什么user.verifyPassword()仅提供undefined

0 个答案:

没有答案