在尝试查询本地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 + "\""
,结果与先前的请求类似。
答案 0 :(得分:0)
要在代码中记录任何异常,需要将代码块放入try catch
try {
// your code here
} catch (error) {
console.log(error);
res.send({ code:400, failed: "error occurred"});
}
请尝试以下代码,然后在此处粘贴错误。