У меня есть массив ошибок на моем бэкэнде, который я хочу отправить обратно клиенту для отображения.
Я делаю запрос в своем действии так
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
.
Есть ли способ сохранить статус ошибки и в то же время перехватить данные на стороне клиента?
Сделай это:
catch (error) {
if (error.response) {
console.info(error.response.data); // => the response payload
}
}
Используйте try/catch в своей функции
try {
const response = await axios.post('/user/register', registeredUserData);
} catch (e) {
console.info(e);
}
Когда придет запрос об успешном выполнении, вы получите данные в блоке response
или catch
и напечатаете ошибку.
Вы можете использовать это,
export const registerUser = registeredUserData => async (dispatch) => {
axios.post('/user/register', registeredUserData)
.then(function (response) {
console.info(response);
})
.catch(function (error) {
console.info(error);
});
};