如何比较异步函数的返回值

时间:2019-04-14 04:52:26

标签: node.js express passport.js

我需要比较异步函数中返回值的帮助。我一直都有“ 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]:将标头发送到客户端后无法设置标头”

非常感谢您的帮助。谢谢。

1 个答案:

答案 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("/");
  });
}