Как сравнить возвращаемое значение асинхронной функции - PullRequest
0 голосов
/ 14 апреля 2019

Мне нужна помощь в сравнении возвращаемого значения в асинхронной функции. У меня всегда есть "Обещание {}". Я уже пробовал разные подходы с разными результатами, но никогда не то, что мне нужно. Это код, который у меня есть.

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 Ответ

1 голос
/ 14 апреля 2019

Вы можете переместить return res.redirect('/'); внутри then обратного вызова

isLoggedInAdmin(req, res, next) {
  isType(req.user.username).then(result => {
    if (req.isAuthenticated() && result == 0) {
      return next();
    }
    return res.redirect("/");
  });
}
...