在 Angular 项目中实施 .switchMap 时出错

Error implementing .switchMap in Angular project

我正在学习 firebase 以通过我的 angular 项目实施,但 运行 遇到 .switchMap() 运算符的问题。我的理解是它应该得到一个可观察的并切换到另一个。我正在尝试获取 firebase 用户并切换到经过身份验证的应用程序用户。

错误: AngularFireObject<{}> 不可分配给类型的参数(值:用户,索引:数字)

这是我的代码

授权卫士:

  canActivate(): Observable<boolean>{
    return this.auth.user$
     .switchMap(user => this.userService.get(user.uid)) <-- error
     .map(appUser => appUser.isAdmin)
 }

用户服务:

  get(uid:string){
   return this.db.object('/users/' + uid);
}

谢谢

AngularFireDatabase 服务的 object() 方法不是 return 可观察的,它 return 是 AngularFireObject。此服务允许您以不同方式进行数据操作以及创建可观察流。

而是使用提供的一种可观察流方法,如 valueChanges()

get(uid: string){
  return this.db.object('/users/' + uid).valueChanges();
}