gpt4 book ai didi

javascript - Angular 中的异步电子邮件验证

转载 作者:行者123 更新时间:2023-11-28 03:17:42 24 4
gpt4 key购买 nike

我想编写一种方法来验证电子邮件是否已存在于 Firebase 身份验证数据库中。因此,如果用户键入电子邮件,则应检查数据库是否已存在。如果是这样,我想使用 FormControl 以 HTML 形式显示消息。

这是我编写的方法的代码:

checkEmail(control:FormControl): Promise<any> | Observable<any>{
const answer = new Promise<any>((resolve, reject) => {
setTimeout(() => {
if(control.value === "someone@hotmail.com"){
resolve({'emailTaken': true})
}else{
resolve(null);
}
},1500);
});
return answer;
}

如您所见,它正在检查静态值(“someone@hotmail.com”)。我希望能够检查数据库中的所有用户(如果该电子邮件已存在)。我在想也许我可以通过获取数据库中所有用户的列表,将它们放入列表中,然后循环遍历列表以查看电子邮件是否等于用户输入来解决此问题。但我还没有找到一个 Firebase 函数来实现此目的,因此我们将不胜感激!

*编辑:这是我的服务代码:

import { Injectable } from '@angular/core';
import * as firebase from 'firebase';
import { LoginComponent } from './login/login.component';
import { stringify } from 'querystring';
import { Router } from '@angular/router';

@Injectable({
providedIn: 'root'
})
export class AuthService {

token:string;

constructor(private router: Router) {

if(localStorage.getItem('token')) {
this.token = localStorage.getItem('token');
}

}

signup(email:string, passwd:string){
firebase.auth().createUserWithEmailAndPassword(email, passwd).catch(
error=> console.log(error)
);
}

isLoggedIn(){
return localStorage.getItem('token');
}

login(email:string, passwd:string){
return firebase.auth().signInWithEmailAndPassword(email, passwd).then(
() => {
firebase.auth().currentUser.getIdToken().then((token:string) => {
this.token = token;
localStorage.setItem('token', token);
});
this.router.navigateByUrl('');
return true;
}).catch(
error => {
console.log(error);
return false;
}

);
}

getToken(){
firebase.auth().currentUser.getIdToken().then(
(token:string) => this.token = token
);
return this.token;
}

logout(){
firebase.auth().signOut();
this.token = null;
localStorage.removeItem('token');
this.router.navigate(['/Login']);
}
}

最佳答案

您绝对应该创建一个调用 FireBase 的服务。在您的代码片段中,您没有发送任何请求。创建服务后,您应该使用 .valueChanges 订阅输入字段,并在 .subscribe 方法中通过服务检查其有效性。

关于javascript - Angular 中的异步电子邮件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59489231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com