在订阅方法内部,即使IF为true,Angular ELSE语句仍在执行



我在Firestore中使用Angular 11,我使用订阅方法从api服务中获取数据,然后使用for循环获取对象值,因此,我可以检查集合中的值是否存在。即使该值存在,它也会先进入条件if语句块,然后再进入else语句。我还放了break;在IF语句中,但它不起作用。

这是代码:

register() {
this.api.getLoginInfo().pipe(take(1)).subscribe(res => {
for (let i = 0; i < Object.keys(res).length; i++) {
this.checkem = res[i].payload.doc.data()['email'];
if (this.registerForm.value.email !== this.checkem) {
alert("Registered Successfully");
this.router.navigate(['/first']);
localStorage.setItem("isLogged", "true");
} else {
console.log("Already Registered");
alert("Already Registered!");
}
}
});

}

Api服务方式:

getLoginInfo() {
return this.firestore.collection("users").snapshotChanges();}

目前,我使用firestore"解决了这个问题;其中";查询

在我的角度服务中,代码是

getlogindetails(email) {
return this.afs.collection('users', ref => ref
.where('email', '==', email)
).get();
}

在我的组件中

register() {
this.submitted = true;
this.api.getlogindetails(this.registerForm.value.email)
.pipe(take(1)).subscribe(res => {
if (!res.empty) {
alert("Already Registered!");
} else {
this.router.navigate(['/first']);
localStorage.setItem("isLogged", "true");
});
}

最新更新