处理来自快递的反应错误

时间:2017-09-01 23:35:29

标签: reactjs express mongoose redux

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

快递:

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)

我尝试做的只是回复来自快递的错误消息,并且我的axios承诺将其视为错误。但我似乎无法得到错误信息。 有什么我在快递中缺少的东西作为对此的回应。

1 个答案:

答案 0 :(得分:3)

事实证明,我的明确回应并不是我需要添加的事实 console.log(" CATCH =",err.response);在我的axios承诺陷入反应。我错过了响应对象。我不知道我需要那个。

如果其他人遇到同样的问题,请填写完整的代码。

<强>阵营:

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
       });
    });
  }
}