每当我调用我的实例方法时,都不会返回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
?