Я новичок в Angular. Я настроил проект с помощью FireStore. Все работает нормально. Теперь я хочу регистрировать только тех пользователей, у которых нет аккаунта у нас, и выдавать сообщение об ошибке тем, кто уже зарегистрирован.
Вот register.component.ts
this.form = this.fb.group({
firstName: new FormControl('',[
Validators.required,
Validators.minLength(3)
]),
lastName: new FormControl('',[
Validators.required,
Validators.minLength(3)
]),
email: new FormControl('',[
Validators.required,
Validators.email,
CustomValidators.shouldBeUnique(this.afs)
])
});
А вот метод Custom Validator ShouldBeUnique (afs).
static shouldBeUnique(afs: AngularFirestore): ValidationErrors | null{
let emailExists: boolean;
return (control: AbstractControl) => {
let emailVal = ''
let email = control.get('email').value;
let collref = afs.collection('users').ref;
let queryref = collref.where('email', '==', email);
queryref.get().then((snapShot) => {
if (snapShot.empty) {
// this.status = 'valid';
console.log('Email is avalible.');
return null;
}
else {
console.log('Email is already registered.');
return { shouldBeUnique: true };
}
});
}
}
Код работает нормально и возвращает null, если электронной почты нет в БД. Но проблема с кодом заключается в том, что когда электронная почта существует в БД, она только печатает сообщение в консоли и не возвращает {shouldBeUnique: true};.
Любая помощь будет принята с благодарностью.