我正在使用nodejs + Express作爲我的後端服務。如何正確獲取承諾返回的值?
我有一個authenHandler.js文件,以幫助sequelize認證:
module.exports = {
isAuthenticated: function(data) {
models.Users.find(data)
.then(function(user) {
if (user) {
return true;
} else {
return false;
}
});
}
}
當我使用app.js這個輔助功能:
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);
}
}
})
這總是轉到else語句因爲isAuthenticated打印行總是返回undefined。看起來promise在調用if-else語句之後返回值。
我不確定如何連接authenHandler.js和app.js.什麼是最好的方式來做到這一點?
你有使用require('authenHandler.js')嗎? –
請參閱副本中的「承諾陷阱」。 –
通過在isAuthenticated函數中保留相同的參數req,res和next,並且可以處理以在函數中檢索日期本身,您可以使用isAuthenticated函數作爲中間件。 –