NodeJS Ошибка входа в SQL (ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту) - PullRequest
0 голосов
/ 23 сентября 2019

Здравствуйте, я довольно новичок в nodeJS, и у меня возникла проблема, которая, по моему мнению, является катализатором во втором операторе if, вложенном в "db.query ..." в приведенном ниже коде.Я получаю сообщение об ошибке ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client, но я не совсем уверен, как исправить эту ситуацию?Я пытаюсь создать форму входа, которая получает информацию от mysql.

  app.post('/login',(req, res) =>{

        const { email, password } = req.body //pulls name="email" from html

        if(email && password){

            db.query('SELECT * from users WHERE email = ? ;',[email], function (err, result) {
                if (err) throw err;
                if (result) {
                    if(result[0].password === password){
                        req.session.userId = result[0].uid
                        return res.redirect('/home')
                    }
                }     
                console.log(result[0].email)
              });

        }
        res.redirect('/login')
    });

1 Ответ

3 голосов
/ 23 сентября 2019

Вам нужно дождаться завершения выполнения вашего запроса.В вашем коде ответ был отправлен клиенту до того, как ваш запрос вернул результат.

Вы можете попробовать что-то вроде следующего.

app.post('/login', async (req, res) =>{

    const { email, password } = req.body //pulls name="email" from html

    if(email && password){
        try {
          let result = await db.query('SELECT * from users WHERE email = ? ;',[email]);
          if (result) {
            if(result[0].password === password){
              req.session.userId = result[0].uid
              return res.redirect('/home')
            } else {
              res.redirect('/login')
            }
          }
       } catch(e) => {
         res.redirect('/login')
       }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...