Консультации с javascript и nodejs с mysql librarie - PullRequest
1 голос
/ 06 августа 2020

У меня следующая консультация в моем коде

class FirstloginController {


    async getToken(req, res, next) {
        const { token } = req.params;
        const {access_token} = req.query;

        try {
            const decoded = jwt.verify(access_token, process.env.JWT_ACCOUNT_ACTIVATION)
            res.json({ message: "El acces token es valido", email: decoded})
            const email_consulted = res.json({ email: decoded})
            let select = await pool.query(`SELECT User_email FROM user WHERE User_email=${email_consulted}`)
            if (select != "") {
            const result = await pool.query(`INSERT INTO user (User_email) VALUES (${email_consulted})`);

            }
    
       } catch (err) {
           next(err);
       }
    }

}

По какой-то причине он не работает в момент вставки, а в выборе у меня следующая ошибка: (node: 14440) UnhandledPromiseRejectionWarning : Ошибка: ER_BAD_FIELD_ERROR: Неизвестный столбец 'undefined' в 'where clause'

GET /firstlogin?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InJleWVzZUBncnVwb2ludmVyby5jb20iLCJpYXQiOjE1OTY3NTE1NDQsImV4cCI6MTU5NjgzNzk0NH0.ZefITNCD7cQ6ZvDMHiTEf4yc9UQI8BKDf9-839agDno 200 12.143 ms - 115
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

Я не уверен, почему это происходит, но все выглядит нормально, ¿вы видите что-то не так?

1 Ответ

0 голосов
/ 07 августа 2020

Вы отправляете два ответа клиенту (res.json()), что это невозможно. Сделать первый запуск только когда токен недействителен:

class FirstloginController {
    async getToken(req, res, next) {
        const { token } = req.params;
        const {access_token} = req.query;
        let decoded
        try {
            decoded = jwt.verify(access_token, process.env.JWT_ACCOUNT_ACTIVATION)
        } catch (err) {
            res.json({ message: "El acces token es valido", email: decoded})
            return // dont continue the function if token is not valid
        }
        try {
            const email_consulted = res.json({ email: decoded}) // you are returning a success response but you havent finished the process yet. Usually the success is sent on the end of the process
            let select = await pool.query(`SELECT User_email FROM user WHERE User_email=${email_consulted}`)
            if (select != "") {
                const result = await pool.query(`INSERT INTO user (User_email) VALUES (${email_consulted})`);
            }
       } catch (err) {
           next(err);
       }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...