gpt4 book ai didi

node.js - Node JS后端中的错误处理

转载 作者:行者123 更新时间:2023-12-03 08:23:56 25 4
gpt4 key购买 nike

我正在使用node.js后端,并且在错误处理方面遇到了一些问题。

在后端,我使用express进行路由。我从前端收到一个带有数组和一些数据的ajax帖子。此数据应保存在数据库中。如果通过将数据添加到数据库而出现错误,我会在后端收到错误消息,但我也希望将消息发送到前端。我曾尝试并在出错,但是在前端,我总是“成功”。
到目前为止,这是我的代码。

后端:

router.post('/tagging', function(req, res) {
var taggedData = req.body;

var actions = taggedData.map(element => {
addTaggedData.addTaggedData(element)
.then(function(result) {
return result;
})
.catch(function(err) {
if (err.code == "ER_NO_SUCH_TABLE") {
console.log("Tagged data contains unknown project name");
res.send("ER_NO_SUCH_TABLE");
} else {
res.send(err);
}
})
});
Promise.all(actions)
.then(
res.send("Successful")
)
.catch(function(err) {
if (err.code == "ER_NO_SUCH_TABLE") {
console.log("Tagged data contains unknown project name");
res.send("ER_NO_SUCH_TABLE");
} else {
res.send(err);
}
});
})

前端ajax调用:
function postTaggedData(taggedData) {
$.ajax({
url: server_connection.url + '/tagging',
type: 'POST',
encoding: "UTF-8",
contentType: 'application/json',
data: JSON.stringify(taggedData),
success: function(data) {
if (data === "Successful") {
console.log("Tagged Data successfully send to server");
}else if(data == "ER_NO_SUCH_TABLE"){
alert("Unknown project");
} else {
alert(data);
}
},
error: function(xhr, status, error) {
if(error == "Internal Server Error"){
alert("There is an error with the server");
}else if(error == "ER_NO_SUCH_TABLE"){
alert("Unknown project");
}else{
alert("There was an error while sending the Tagged Data to the server");
console.log(xhr, "Status: ", status, error);
}

}
})

}

最佳答案

即使您发送错误作为响应,express也不知道这是一个错误,所以它使用状态码200发送它,这表示OK,所以前端认为响应成功。

尝试设置非正常状态,然后发送如下错误:res.status(404).send(err)。其中404是“Not Found”的状态代码

您可以找到有关状态码here的更多信息

您可以找到有关表达错误处理的更多信息here

关于node.js - Node JS后端中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48804051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com