gpt4 book ai didi

reactjs - 处理从express到react的错误响应

转载 作者:行者123 更新时间:2023-12-03 13:41:07 27 4
gpt4 key购买 nike

当用户添加非唯一类别或根本没有类别时,我尝试从 Express api 调用发送错误响应,该调用出现错误。我能够将类别保存到数据库并发回正确的响应。我不确定我在 Express 中使用了正确的响应方法。

express :

exports.addCategory = (req, res, next) => {
var category = new Category(req.body);
category.save().then(doc => {
res.send(doc);
}).catch(err => {
res.send({message:'Category must be unique!'});
});

}

react

export function addCategoryName( name ){
return (dispatch) => {
const dbPost = axios.post('/api/add-category', {name:name});
dbPost.then(result => {
console.log("result = ", result);
dispatch({
type: type.ADD_CATEGORY_NAME,
payload: result.data
});
}).catch(err => {
console.log("CATCH = ", err);
// dispatch({
// type: type.ADD_CATEGORY_NAME_ERROR,
// payload: err.message
// });
});
}
}

上面的响应直接进入 dbPost.then(result => { 而不是 catch。所以我尝试了

明确回复

res.status(err.statusCode || 500).json({message:msg});

这给了我:

CATCH =  Error: Request failed with status code 500
at createError (createError.js:15)
at settle (settle.js:18)
at XMLHttpRequest.handleLoad (xhr.js:77)

我想做的就是用来自 Express 的错误消息进行响应,并让我的 axios promise 将其捕获为错误。但我似乎无法看到错误消息。作为对此的回应,我是否遗漏了一些东西。

最佳答案

所以事实证明这不是我的明确回应,而是我需要添加的事实console.log("CATCH = ", err.response);在我的 axios promise 中捕获 react 。我缺少响应对象。我不知道我需要那个。

获取完整代码,以防其他人遇到同样的问题。

react :

export function addCategoryName( name ){
return (dispatch) => {
const dbPost = axios.post('/api/add-category', {name:name});
dbPost.then(result => {
console.log("result = ", result);
dispatch({
type: type.ADD_CATEGORY_NAME,
payload: result.data
});
}).catch(err => {
console.log("CATCH = ", err.response);
dispatch({
type: type.ADD_CATEGORY_NAME_ERROR,
payload: error.response.data.error
});
});
}
}

关于reactjs - 处理从express到react的错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46009126/

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