Ich bin neu zu Versprechen, und ich weiß nicht, wie dieses Problem zu beheben: Ich mache ein Auth-System, und mein erster Aufruf ist, E-Mails in der Datenbank zu überprüfen. Wenn ein Benutzer existiert, dann überprüfe das Passwort mit einem verschlüsselten Passwort ... Ich benutze diese lib für bcrypt: https://npmjs.org/package/bcrypt was nicht kompatibel ist, also benutze ich "promisify" für die folgende Signatur: compare (password, crypted_password, Rückrufen).Bluebird Promisify mehrere Argumente
Also das ist mein Code:
var compare = Promise.promisify(bcrypt.compare);
User.findByEmail(email)
.then(compare()) <--- here is the problem
Das ist meine findByEmail Methode:
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;
}
Wie mehr Werte des "Vergleich" Verfahren in diesem Fall zuweisen? Verpasse ich den Punkt der Versprechen?
Wie genau funktioniert das 'user' Variable aussehen? – Bergi
es ist ein leeres Array, wenn keine Benutzer gefunden wurden, oder ein Hash-Array – rizidoro
Also 'user [0]' ist das 'crypted_password' Argument? Woher bekommst du das Passwort in deinem Code? – Bergi