Возврат ошибки из обещания в действии магазина vuex - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь настроить действие входа в систему, используя Parser, который возвращает ошибку, если аутентификация не удалась. Затем я хочу перехватить ошибку и вернуть ее компоненту, в котором отображается ошибка. Однако я всегда получаю необоснованное отклонение обещания.

Я уже пробовал разные способы отклонения или возврата ошибки, но безуспешно. отклонить (ошибка) (рекомендуется здесь Возвращение обещаний от действий Vuex ) возврат отклонить (ошибка) вернуть Promise.reject (ошибка) return Promise.reject (новая Ошибка (error)) или просто ошибка возврата

мои действия:

actions: {
      login(vuexContext, authData) {
        console.log(authData.email)
        Parse.User.logIn(authData.email, authData.password)
          .then(user => {
            vuexContext.commit('SET_USER', user)
          })
          .catch(error => {
            console.error('Actions login - Error: ' + error)
            reject(error)
          })
      }

мой метод отправки:

onSubmit() {
      this.$store
        .dispatch('login', {
          email: this.formData.email,
          password: this.formData.password
        })
        .then(() => {
          // ..
        })
        .catch(error => {
          console.log('Catching' + error)
          if (error.code == 101) {
            this.errorMsg = 'Email oder Passwort falsch'
          } else {
            this.errorMsg =
              'Entschuldigung, hier ist etwas schief gelaufen... Fehler: ' +
              error.message
          }
          this.showError = true
          this.$router.push('/sessions/new')
        })
    }

Я ожидаю, что блок catch в методе onSubmit перехватывает ошибку.

1 Ответ

0 голосов
/ 26 января 2019

Вы должны обернуть функцию return как новое обещание.

actions: {
    login(vuexContext, authData) {
      return new Promise((resolve, reject) => {
        console.log(authData.email)
        Parse.User.logIn(authData.email, authData.password)
          .then(user => {
            vuexContext.commit('SET_USER', user)
            resolve()
          })
          .catch(error => {
            console.error('Actions login - Error: ' + error)
            reject(error)
          })
      })
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...