Как вернуть данные json с ошибкой 400 в React из Express? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть массив ошибок на моем бэкэнде, которые я хочу отправить обратно клиенту для отображения.

Я делаю запрос в своем действии, вот так

export const registerUser = registeredUserData => async (dispatch) => {
    const response = await axios.post('/user/register', registeredUserData);
};

А на бэкенде у меня что-то вроде этого

if (errors && errors.length) {
    res.status(400).json({ errors });
  }

Мой вопрос: как я могу вернуть массив ошибок клиенту?

Я попытался обернуть await в try catch, но error в catch содержит только имя error и не имеет data.

Что работает, если я избавлюсь от status(400). Затем он обрабатывается как успешный вызов, и данные присваиваются переменной response.

Есть ли способ сохранить статус ошибки и одновременно перехватить данные на стороне клиента?

Ответы [ 3 ]

1 голос
/ 13 июня 2019

Используйте try / catch в своей функции

try {
    const response = await axios.post('/user/register', registeredUserData);
} catch (e) {
    console.log(e);
}

Когда приходит запрос на успех, вы получите данные в блоке response или catch, в котором будет напечатана ошибка.

1 голос
/ 13 июня 2019

Сделайте это:

catch (error) {
    if (error.response) {
        console.log(error.response.data); // => the response payload 
    }
}
0 голосов
/ 13 июня 2019

Вы можете использовать это ,

export const registerUser = registeredUserData => async (dispatch) => {
  axios.post('/user/register', registeredUserData)
    .then(function (response) {
      console.log(response);
    })
    .catch(function (error) {
      console.log(error);
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...