Сервер NodeJS аварийно завершает работу при запросе базы данных MySQL с «Неверными аргументами» для выдачи ошибки - PullRequest
0 голосов
/ 10 ноября 2018

При попытке запросить локальную базу данных MySQL я сталкиваюсь со следующей ошибкой:

..\server\node_modules\mysql\lib\protocol\Parser.js:80
        throw err; // Rethrow non-MySQL errors
        ^
Incorrect arguments

Никакой дополнительной информации после этого не предоставляется. Я посмотрел уже доступные решения, такие как добавление:

con.on('error', function(err) {
  console.log("[mysql error]",err);
});

или даже замену (единственного) throw err в коде на console.log(err);, но ни один из них не сработал.

Сервер в конечном итоге аварийно завершает работу после отображения ошибки, и это происходит после console.log('Query res: ', results); в приведенном ниже коде, что означает, что запрос был успешным и извлек требуемые данные.

На мой взгляд, это может быть вызвано bcrypt , но ошибка происходит из пакета MySQL node.js , как видно из журналов.

loginroutes.js:

exports.login = function(req, res) {
    console.log("email:", req.body.email, "password:", req.body.password);
    var email = req.body.email;
    var password = req.body.password;

    con.query("SELECT * FROM users WHERE email = ?", [email], (err, results) => {
        if (err) {
            console.log("Error ocurred");
            res.send({"code":400, "failed":"error occurred"});
        } else {
            console.log('Query res: ', results);
            if (results.length > 0) {
                if (bcrypt.compareSync(results.password, password))
                    res.send({"code":200, "success":"login successful"});
                else
                    res.send({"code":204, "success":"email & password combination does not match"});
            } else
                res.send({"code":204, "success":"email does not exist"});
        }
    });
};

Что я пропустил и что я могу сделать, чтобы решить эту проблему?

Спасибо.

РЕДАКТИРОВАТЬ: также пытался с SELECT * FROM users WHERE email = \"" + email + "\"" просто ради, оказывается, аналогично предыдущему запросу.

1 Ответ

0 голосов
/ 10 ноября 2018

Чтобы зарегистрировать любое исключение в коде, вам нужно поместить блок кода внутри try catch

try {
  // your code here
} catch (error) {
  console.log(error);
  res.send({ code:400, failed: "error occurred"});
}

пожалуйста, попробуйте этот код и вставьте ошибку здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...