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

时间:2017-11-20 00:10:19

标签: javascript angular firebase-authentication angularfire switchmap

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

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

这是我的代码

AuthGuard:

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

UserService:

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

由于

1 个答案:

答案 0 :(得分:0)

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

而是使用像valueChanges()这样提供的一种可观察流方法。

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