我的离子应用程序中有一个功能,用于检查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";
}
但我无法将true
或false
收入if(this.checkValidEmail(this.user.email))
。请帮助我解决这个问题。
答案 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";
}
});