当MySQL返回错误/异常时,我的nodejs服务器崩溃。
这是我后端的代码。我在查询函数中使用了if else,然后得到响应,但我的服务器崩溃了。使用try and catch,它仍然崩溃,并且我没有得到任何响应。
Rezervacija.create = function (newEmp, result) {
try{
konekcija.query("INSERT INTO rezervacija set ?", newEmp, function (err, res) {
console.log(res.insertId);
result(null, res.insertId);
});
}
catch(err){
result(err, null);
console.log("Error",err);
}
};我试了又试,但是它似乎不起作用,也许我用错了?我是JS的新手,还在学习。
我看到的唯一解决方案是捕获错误,这样它就不会使服务器崩溃。
提前谢谢。
发布于 2020-12-30 01:01:35
我从来没有使用过带有节点的mysql,但是官方的例子和你的是有区别的。
connection.query('INSERT INTO posts SET ?', {title: 'test'}, function (error, results, fields) {
if (error) {
throw error;
}
console.log(results.insertId);
});对我来说,每次使用回调函数时,你必须首先处理其中的错误,然后当你调用你的函数时,你也必须处理这些错误。
作为您的示例,您可以尝试这样做:
Rezervacija.create = function (newEmp, result) {
konekcija.query("INSERT INTO rezervacija set ?", newEmp, function (err, res) {
if (err) {
throw err;
}
console.log(res.insertId);
result(null, res.insertId);
});
};附注:+因为我是slavic人,所以我理解你的变量,但如果你在代码中使用英语来命名你的变量,函数等,那会更好。
发布于 2020-12-30 01:49:30
我用男人的方式解决了这个问题。
我所做的是注释mysql parser.js中抛出错误的那一行,它在第437行。在您的响应中,您仍然会收到来自MySQL DB的错误消息,但它不会再使服务器崩溃。
如果我得到了一个更好的答案,那么我肯定会使用它。
但由于这是一个针对大学的项目,因此可以很好地工作:)
https://stackoverflow.com/questions/65495714
复制相似问题