Почему я не получаю соответствующие сообщения об ошибках, отображаемые при (сетевом) запросе? - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь понять, как получать полезные сообщения об ошибках на стороне клиента, но продолжаю получать общие c сообщения об ошибках. Например, попытка зарегистрироваться по электронной почте, которая недоступна, может привести к сообщению об ошибке email@email.com is already in use. Однако я получаю сообщение generi c Request failed with status code 409, которое явно бесполезно для пользователя. Ответ сети соответствует ожидаемому, как показано на скриншоте ниже. Что дает? Почему я не получаю того же сообщения об ошибке, что и мои полезные данные (Redux)?

Ниже приведены соответствующие фрагменты кода.

Контроллер регистрации

export default {
  signup: async (req, res, next) => {
    try {
      const { fullname, username, email, password } = req.body;

      // Check if there is a user with the same email
      const foundUser = await User.findOne({ email });

      if (foundUser) {
        return res.status(409).send({ error: `${email} is already in use` });
      }

      const newUser = await User.create({
        fullname,
        username,
        email,
        password,
      });

      // Assign token to succesfully registered user
      const token = authToken(newUser);

      return res.status(200).send({ token, user: newUser });
    } catch (error) {
      next(error);
    }
  },
};

Действие регистрации

export const createAccount = ({
  fullname,
  username,
  email,
  password, 
  history
}) => async dispatch => {
  dispatch({
    type: actionTypes.CREATE_ACCOUNT_REQUEST,
  });

  try {
    const {
      data: {
        newUser: { token, user },
      },
    } = await request.post('/auth/signup', {
      fullname,
      username,
      email,
      password,
    });

    localStorage.setItem('auth-token', token);

    dispatch({
      type: actionTypes.CREATE_ACCOUNT_SUCCESS,
      payload: user
    });

    // Redirect to home
    history.push('/home');
  } catch (error) {    
    dispatch({ 
      type: actionTypes.CREATE_ACCOUNT_FAILURE, 
      payload: error.message
    });
  }
};

Регистрация ответа сети

enter image description here

Redux ошибка регистрации полезной нагрузки

enter image description here

1 Ответ

2 голосов
/ 25 марта 2020

Попробуйте «error.response.data.error» вместо «error.message»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...