Ich verwende nodejs + Express für meinen Back-End-Service.Wie bekomme ich den Rückgabewert eines Versprechens?
Ich habe eine authenHandler.js Datei-Authentifizierung mit sequelize zu helfen:
module.exports = {
isAuthenticated: function(data) {
models.Users.find(data)
.then(function(user) {
if (user) {
return true;
} else {
return false;
}
});
}
}
Wenn ich diese Hilfsfunktion in app.js bin mit:
app.use(function(req, res, next) {
// process to retrieve data
var isAuthenticated = authProvider.isAuthenticated(data);
console.log(isAuthenticated);
if (isAuthenticated) {
console.log("auth passed.");
next();
} else {
var err = new Error(authenticationException);
err.status = 403;
next(err);
}
}
})
Dies geht immer auf die else-Anweisung weil die isAuthenticated-Druckzeile immer undefiniert zurückgibt. Offenbar hat die Zusage den Wert zurückgegeben, nachdem die if-else-Anweisung aufgerufen wurde.
Ich bin mir nicht sicher, wie man die authenHandler.js und die app.js verbindet. Was ist der beste Weg, es zu tun?
müssen Sie noch benötigen ('authenHandler.js') noch? –
Siehe "Promise Gotchas" im Duplikat. –
Sie können die isAuthenticated-Funktion als Middleware verwenden, indem Sie den Parameter req, res und next in der Funktion isAuthenticated beibehalten und das Datum selbst in der Funktion abrufen können. –