我是Promises新手,並不知道如何解決此問題: 我正在做一個身份驗證系統,我的第一個電話是檢查數據庫上的電子郵件。如果用戶存在,然後檢查密碼對加密密碼...我使用這個lib bcrypt:https://npmjs.org/package/bcrypt這是不承諾兼容,所以我使用「promisify」爲以下簽名:比較(密碼,crypted_password,回電話)。藍鳥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'參數?你從哪裏獲得代碼中的'password'? – Bergi