У меня проблема с реализацией авторизации администратора с использованием базы данных Firebase в реальном времени.У меня есть поле isAdmin, которое возвращает булево наблюдаемое в firebase, но оно не может прочитать значение из firebase, чтобы вернуть логическое значение.Указанный мною путь верен. Я дважды проверил его, но он все равно не будет работать.Пожалуйста, помогите !!
Мой Admin-Auth Guard:
export class AdminAuthGuard implements CanActivate {
constructor(
private authService:AuthService,
private router:Router,
private db : AngularFireDatabase,
private auth : AngularFireAuth
){}
uid = this.auth
.authState
.pipe(
map(authState => {
if(!authState){
return null;
} else {
return authState.uid;
}
})
);
isAdmin= this.uid
.pipe(
switchMap(userId => {
if(!userId){
return observableOf(false)
} else {
this.db
.object('/admin/' + userId)
.valueChanges()
}
})
);
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> |
Promise<boolean> | boolean {
return this.isAdmin;
}
}