Как передать логический результат в «Если условие» - PullRequest
0 голосов
/ 02 мая 2018

У меня есть функция в моем ионном приложении, чтобы проверить, существует ли уже электронная почта пользователя в базе данных firebase.

  checkValidEmail(email):any{
    let result=this.userService.getUserByEmail(email);
    console.log(result);
    result.subscribe((k:User[])=>{
      if(k.length>0){
        return true;
      }else{
        return false;
      }
    });
  }

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

if(this.checkValidEmail(this.user.email)){
      console.log("Error : Already has this email address ");
      this.error ="Already has this email address in out system";
    }

Но я не могу получить true или false в if(this.checkValidEmail(this.user.email)). Пожалуйста, помогите, я новичок в этом.

1 Ответ

0 голосов
/ 02 мая 2018

Объект результата является асинхронным потоком, и обратный вызов подписки срабатывает позднее, поэтому checkValidEmail не возвращает результат. Вы можете использовать обратный вызов и получить этот обратный вызов для запуска, или вы можете использовать обещания или RxJS наблюдаемые .

Для простоты я изменил ваш код с помощью простой функции обратного вызова.

  checkValidEmail(email,resultCallback){
    let result=this.userService.getUserByEmail(email);
    console.log(result);
    result.subscribe((k:User[])=>{
      if(k.length>0){
        resultCallback(true);
      }else{
        resultCallback(false);
      }
    });
  }

Изменить код следующим образом

    this.checkValidEmail(this.user.email,(isError)=>{
        if (isError){
          console.log("Error : Already has this email address ");
          this.error ="Already has this email address in out system";
        }


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