Как обрабатывать ошибки в catch - vue.js - PullRequest
0 голосов
/ 06 ноября 2019

Мне было интересно, как обработать ошибки в обещании. У меня есть форма регистрации с адресом электронной почты и персональным кодом. Когда кто-то не заполняет ввод, возникает ошибка. Но когда в моей базе есть электронная почта или личный код, я бы хотел перенаправить его на страницу входа - потому что его учетная запись существует. И есть проблема. Если в моей базе есть электронное письмо, он перенаправляется на вход (это нормально), но когда он пишет неправильный адрес электронной почты, но имеет хороший личный код, у меня появляется ошибка в моей консоли. Вот код:

       Promise.all(auxData).then(() => {
          this.profileCheck()
        .then(() => {
          // some code
        })
        .catch(e => {
          if ( e.email.custEmailExists == "This email existe." ) {
            co.postLogin(loginData).then(data => {
             this.$router.push({ name: "login" }); 
            });
          } else if (
            e.person_code.custPersonCodeExists == "this personal code 
               existe") {
             this.$router.push({ name: "login" });
          }
         });
    });

Таким образом, в этом втором условии (это случай, когда электронная почта неверна и существует личный код), моя ошибка: «Uncaught (в обещании) TypeError: Невозможно прочитать свойство 'custEmailExists'неопределенный ". Это ошибки, показывающие автоматически из моего API. Первое условие отбрасывается, потому что электронная почта является новой, поэтому она должна фокусироваться на втором условии. Но это не так.

1 Ответ

1 голос
/ 06 ноября 2019

JavaScript пытается проверить значение e.email.custEmailExist, но e.email - undefined. Используйте:

if (e.email && e.email.custEmailExists == "This email existe.")

или:

if ((e.email || {}).custEmailExists == "This email existe.")

Второй вариант немного более хакерский.

...