【发布时间】:2018-02-11 01:02:30
【问题描述】:
当用户添加非唯一类别或根本没有类别时,我正在尝试发送错误响应并表达 api 调用出错。我能够将类别保存到数据库并发回正确的响应。我不确定我在 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!'});
});
}
反应
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 承诺将其作为错误捕获。但我似乎无法得到错误信息。 作为对此的回应,我在快递中是否缺少一些东西。
【问题讨论】:
-
不是重复的。我的问题是为什么我的 axios 调用中的 catch 方法没有捕获错误消息。这就是为什么我问它是否与表达反应有关,但我越看它不是表达。但是感谢您的回复和链接
-
它没有捕获错误消息,因为结果不是错误。如果您希望结果为错误,则需要设置错误代码(如重复...)
-
我尝试设置错误代码 res.status(500).send({ error: "boo:(" }); 问题是这转到 then( result ) 而不是 catch(error ) 在 axios 承诺中。不知道你所说的错误代码是什么意思
-
你看到服务器的响应是500了吗?
标签: reactjs express mongoose redux