【发布时间】:2014-02-11 19:55:48
【问题描述】:
我是 Promises 的新手,不知道如何解决这个问题: 我正在做一个身份验证系统,我的第一个电话是检查数据库上的电子邮件。如果用户存在,则根据 bcrypted 密码检查密码...我正在将此库用于 bcrypt:https://npmjs.org/package/bcrypt 这与承诺不兼容,因此我将“promisify”用于以下签名:比较(密码, crypted_password,回调)。
这是我的代码:
var compare = Promise.promisify(bcrypt.compare);
User.findByEmail(email)
.then(compare()) <--- here is the problem
这是我的 findByEmail 方法:
User.prototype.findByEmail = function(email) {
var resolver = Promise.pending();
knex('users')
.where({'email': email})
.select()
.then(function(user) {
if (_.isEmpty(user)) { resolver.reject('User not found'); }
resolver.fulfill(user);
});
return resolver.promise;
}
在这种情况下如何为“比较”方法分配多个值?我错过了承诺的意义吗?
【问题讨论】:
-
user变量到底长什么样? -
如果没有找到用户,则为空数组,或哈希数组
-
那么
user[0]是crypted_password参数吗?您从代码中的哪里获得password?
标签: javascript asynchronous promise q bluebird