nodejs服务器在使用“错误参数”查询mysql数据库时崩溃,从而引发错误

qvk1mo1f  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(341)

在尝试查询本地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包,如日志中所示。
登录路线.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 + "\"" 只是为了这个目的,结果与之前的请求类似。

tnkciper

tnkciper1#

要在代码中记录任何异常,需要将代码块放在其中 try catch ```
try {
// your code here
} catch (error) {
console.log(error);
res.send({ code:400, failed: "error occurred"});
}

请尝试此代码并在此处粘贴错误。

相关问题