@bimsalrobit

Как достучаться до response в ошибке и вывести текст «User with this username already exists» в консоль?

Делаю регистрацию в приложении.
При отправке формы на локальный сервер если username уникальный получаю вот такой response в Network:
response когда все ок
5e9362a3206ae572657515.png

Если username не уникальный то вот такой response:

response ошибки
5e936341a12e9528565314.png


и ошибку в консоли если username не уникальный :
ошибка в консоли
5e9363983c6e0993620862.png


Вообще я делаю запрос на сервер с помощью кода(закоментировал то что в консоли должно быть):
onSubmit: async (formValues) => {
          console.log('submit', formValues);
          setSubmitting(true);
          try {
              const res = await api('api/auth/register', {
                  method:'POST',
                  body: JSON.stringify(formValues)
              });
              const token = res.token.token;
              const er = res[0].message;
              
              localStorage.setItem('myToken', token);
              console.log('Result!',token);
              console.log('Error',er);         // должно отобразить в консоль: User with this username already exists
              history.push("/home"); 
          } catch(e) {
              console.error(e);
          } finally {
              setSubmitting(false);
          }   
      },

И вот в response я достучался вот так
const token = res.token.token;
поэтому могу в консоль вывести token в консоль
А вот когда пишу:
const er = res[0].message;
то ничего не выводится в консоль.....

Хотя должно отобразиться:
User with this username already exists

Как достучаться до response в ошибке и вывести текст "User with this username already exists" в консоль?
  • Вопрос задан
  • 372 просмотра
Пригласить эксперта
Ответы на вопрос 2
@real2210
Статус 400 отрабатывает в трай
if (res.status === 400)
 console.log(res.message)
else if (res.status === 200)
 // присваиваешь токен
Ответ написан
@Mazino
Зачем вам конструкция try catch, если вы ее используете не правильно?
onSubmit: async formValues => {
          console.log('submit', formValues);
          setSubmitting(true);
          try {
              const { token: { token } } = await api('api/auth/register', {
                  method:'POST',
                  body: JSON.stringify(formValues)
              });
              localStorage.setItem('myToken', token)
              console.log('Result!', token)    
              history.push("/home"); 
          } catch({ status, data: [{ message }] }) { // без понятия что вы используете в качестве обработчика запросов и как он пакует данные, но все они работают на базе одного api, а у них данные примерно так и разложены. Исследуйте этот вопрос, с чем в работаете и что происходит.
              if(status === 400) console.error(message); 
          } finally {
              setSubmitting(false);
          }   
      },
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы