Я новичок в Promises и не знаю, как решить эту проблему: Я занимаюсь системой auth, и мой первый звонок - проверить электронную почту в базе данных. Если пользователь существует, то проверьте пароль на пароль bcrypted ... Я использую эту lib для bcrypt: https://npmjs.org/package/bcrypt, которая не обещает быть совместимой, поэтому я использую «promisify» для следующей подписи: compare (password, crypted_password, Перезвони).Bluebird promisify несколько аргументов
Так что это мой код:
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' переменного выглядеть? – Bergi
Это пустой массив, если ни один пользователь, который нашел, или хэш-массив – rizidoro
Итак, 'user [0]' является аргументом 'crypted_password'? Откуда вы получаете пароль из своего кода? – Bergi