Angular Firebase 和可观察的错误处理

蒂姆·塔拉特

我正在努力理解如何在使用下面的代码时向 angular firebase 添加一些错误检测。当新用户登录我的网站时,他们对数据库没有任何权限,并且控制台中会抛出错误。

我只是想得到它,以便如果抛出此错误 auth.isApproved 返回 false,此时它不会返回。我试过向 .switchMap 添加一个 .catch ,但没有奏效。

控制台中的错误:

未捕获的错误:permission_denied at /authorization/users/VAST9WnazFUc6u9PQ5x74bOPIsJ2:客户端无权访问所需数据。

消费组件:

this.auth.isApproved().subscribe(approved => {
  console.log (approved);

AuthService(授权):

isApproved(): Observable<boolean> {
    return this.user$
    .switchMap(user => this.DataService.getSharesDBUser(user.uid).valueChanges())
    .map(appUser => appUser.isApproved)
  }

数据服务(DataService)

getSharesDBUser(userUID : string ): AngularFireObject<firebaseDBUser> {
    return this.db.object('/authorization/users/' + userUID);
  }

界面

export interface firebaseDBUser {
  isAdmin                  : boolean;
  isApproved               : boolean;
  name                     : string;
}
诺埃米·萨伦

我的第一个猜测是catchswitchMap内部 observable添加一个运算符,但您说它不起作用:/

isApproved(): Observable<boolean> {
    return this.user$.switchMap(user =>
        this.DataService.getSharesDBUser(user.uid).valueChanges()
            .map(appUser => appUser.isApproved)
            .catch(() => Observable.of(false))
    )
}

如果catch操作符无法捕捉到这个错误,那应该是因为错误不是在valueChanges可观察链内部触发的,也许它就在之前,在this.db.object(...)函数调用中。在这种情况下,一个简单try-catch的调用应该可以解决问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

管道未正确映射和错误处理 Angular

来自分类Dev

Angular 2中的部分可观察处理

来自分类Dev

Angular Firebase 和 AngularFireDatabase

来自分类Dev

Angular 和 Firebase

来自分类Dev

可观察或观察者中的错误处理?

来自分类Dev

Angular 8,Firebase angular fire2如何找到可观察对象的状态变化

来自分类Dev

RxJava链接的可观察对象和错误处理(自定义异常传播)

来自分类Dev

Angular2可观察和无极

来自分类Dev

使用发布和连接创建可观察到的热点时出现Angular 2错误

来自分类Dev

Angular2:HTTP错误处理

来自分类Dev

集成Angular,Express错误处理

来自分类Dev

Angular 7 HttpClient ConcatMap错误处理

来自分类Dev

Angular 中的错误处理注入

来自分类Dev

Angular 2 http 服务错误处理

来自分类Dev

Angular 2中的身份验证,处理可观察对象

来自分类Dev

处理Angular Router Guard的多个可观察对象

来自分类Dev

Angular 2中的身份验证,处理可观察对象

来自分类Dev

茉莉花的Angular 2可观察错误测试

来自分类Dev

Angular2 @ TypeScript可观察到的错误

来自分类Dev

Angular 2捕捉到可观察会导致错误:

来自分类Dev

Angular 2-可观察和异步HTTP加载

来自分类Dev

angular2 * ngfor和嵌套可观察

来自分类Dev

可观察和承诺在Angular中如何工作?

来自分类Dev

Angular 8和内部订阅可观察的设置

来自分类Dev

Angular-RxJS-可观察和方法返回

来自分类Dev

在Angular中使用可观察的存储和组件输入

来自分类Dev

Angular 2-可观察和异步HTTP加载

来自分类Dev

在Angular 2中共享和更新可观察数据

来自分类Dev

Angular2 可观察和访问后响应