使用FirebaseListObservable进行授权错误处理

时间:2017-08-22 19:01:36

标签: typescript firebase angularfire2

我正在尝试使用catch方法从Firebase / AngularFire捕获授权错误,但是我收到错误Property 'catch' does not exist on type 'FirebaseListObservable<any[]>'.

问题是当我无法访问基于身份验证规则的某些数据时。当我通过身份验证时,代码可以正常工作(没有.catch,因为这是编译错误)。

Records: FirebaseListObservable<any[]>;

constructor(public afAuth: AngularFireAuth, public af: AngularFireDatabase) 
{
    try {
        this.user = afAuth.authState;
        this.Records = af.list('/Testing');
    }
    catch (e) {
        console.log((<Error>e).message);//conversion to Error type
    }
}

以上将有效。但是,如果由于身份验证规则无法访问/Testing,则会出现异常。我似乎无法用标准的try / catch来捕获这个错误。我确实看到了使用catch的参考,

        this.Records = af.list('/Testing').catch(e => {
            console.log((<Error>e).message);//conversion to Error type
        });

但是,这会产生上面的编译错误。

虽然我知道我可以更改Firebase读取权限以允许任何人读取数据,但我正在尝试处理此错误情况以使我的代码更安全,以防有人访问正在尝试的应用程序的一部分处理数据,但安全性不允许他们访问数据。

1 个答案:

答案 0 :(得分:0)

我不确定为什么赶不上工作,但你可以尝试这样的事情。 subscribe的第二个参数是错误处理的参数,订阅必须存在于observable上。

af.list('/Testing').subscribe(()=>{}, (err)=>{console.log(err)})