mysql - 使用“不正确的参数”查询 MySQL 数据库以引发错误时,NodeJS 服务器崩溃
问题描述
在尝试查询本地 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 + "\""
也只是为了它而尝试过,结果类似于之前的请求。
解决方案
要在代码中记录任何异常,您需要将代码块放入其中try catch
try {
// your code here
} catch (error) {
console.log(error);
res.send({ code:400, failed: "error occurred"});
}
请尝试此代码并在此处粘贴错误。
推荐阅读
- ansible - Ansible-playbook:在 100 台 linux 服务器中更改多个不同用户的帐户密码
- meteor - 当我将 Meteor 从 1.6.1.3 更新到 1.7 时,网络浏览器无法再正确加载
- scipy - 某物与自身的余弦距离是多少?
- routing - Flutter 通过 Route 和 Drawer 导航屏幕:使用 Pop、PushNamed 或 PushReplacementNamed
- amazon-web-services - 如何使用 AWS TransferManager 从 S3 下载多个 ZIP 文件
- ios - Swift - 枚举采用整数并确定范围
- python - 阻止rect移动moveip pygame
- c - 用C语言将二进制文件读入HashTable
- python - Phaser 2 不使用 Django 将图像加载到游戏中
- fabricjs - Fabricjs 文本选择模式或编辑模式