Ich versuche, eine Anmeldung mit node.js mit passport
machen, aber ich habe ein Problem, wenn ein Benutzername, der nicht in der DB ist versucht, sich anzumelden. Ich erhalte den folgenden Fehler (node:9708) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: deferred.resolve is not a function
.Node.js Unbehandelte Versprechen Ablehnung
Login-Funktion:
exports.login = function(username, password) {
var deferred = Q.defer;
MongoClient.connect(mongodbUrl, function(err, db) {
var collection = db.collection('users');
collection.findOne({'username' : username}).then(function(result) {
if (result === null) {
console.log('User not found:', username);
deferred.resolve(false);
} else {
var hash = result.password;
console.log('User found:', username);
if (bcrypt.compareSync(password, hash)) {
deferred.resolve(result);
} else {
console.log('Authentication for ' + username + 'failed');
deferred.resolve(false);
}
}
db.close();
});
}).catch(err => console.log(err));
return deferred.promise;
};
Passport.use Funktion:
passport.use('local-signin', new LocalStrategy({passReqToCallback : true}, function(req, username, password, done) {
funct.login(username, password).then(function(user) {
if (user) {
console.log(user.username + 'logged in');
req.session.success = 'Welcome, ' + user.username + '!';
done(null, user);
}
if (!user) {
console.log('Failed login attempt');
req.session.error = 'Your Password or Username is incorrect! Please try again.';
done(null, user);
}
}).fail(function(err) {
console.log(err.body);
});
}));
Es scheint sich zu beschweren über 'deferred.resolve' nicht eine Funktion in der ersten' if' Anweisung auf der Login-Funktion. – Nhabbott
Ich verstand das, aber die Frage war, wie "Unhandled Promise Ablehnung" zu beheben. Wenn er den Fehler fängt und teilt es dann können wir ein detaillierteres Verständnis des Problems haben. – Blaze349
Dann müssen Sie diese Funktion erstellen. Wenn meine Frage gelöst das unbehandelte Versprechen dann bitte ein Tick und ein upvote geben. – Blaze349