我需要比较异步函数中返回值的帮助。我一直都有“ Promise {}”。我已经尝试了不同的方法并获得了不同的结果,但是我从不需要。这是我到目前为止的代码。
async function isType(username) {
const result = await db.query('select * from users where username=?', [username])
return await result[0].type;
}
module.exports = {
isLoggedIn(req, res, next) {
if (req.isAuthenticated() && isType(req.user.username)==0) {
return next();
}
return res.redirect('/');
}
};
我也尝试过这样的事情:
isLoggedInAdmin(req, res, next) {
isType(req.user.username).then(result => {
if (req.isAuthenticated() && result==0) {
return next();
}
})
return res.redirect('/');
}
但是在这种情况下,错误是“错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头”
非常感谢您的帮助。谢谢。
答案 0 :(得分:1)
您可以在return res.redirect('/');
回调中移动then
isLoggedInAdmin(req, res, next) {
isType(req.user.username).then(result => {
if (req.isAuthenticated() && result == 0) {
return next();
}
return res.redirect("/");
});
}