如何在&#34中传递布尔结果;如果条件"

时间:2018-05-02 04:44:41

标签: javascript firebase firebase-realtime-database firebase-authentication ionic3

我的离子应用程序中有一个功能,用于检查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 条件下传递其boolen结果,以检查输入的电子邮件地址是否已存在于数据库中。它存在显示错误。

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

但我无法将truefalse收入if(this.checkValidEmail(this.user.email))。请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:1)

结果对象是异步流,订阅回调稍后会触发,因此checkValidEmail不会返回结果。 您可以使用回调并触发回调,也可以使用承诺 RxJS observables

为了简单起见,我使用简单的回调函数更改了代码。

  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";
        }


});