我在使用Firebase实时数据库实施管理员授权时遇到问题。我有一个isAdmin字段,该字段返回一个可观察到的firebase布尔值,但是它似乎无法从firebase读取该值以返回布尔值。我指定的路径是正确的,我已经对其进行了仔细检查,但仍然无法使用。请帮忙!!
我的管理员身份保护:
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;
}
}