0
我试图用捕捉方法可以捕捉到火力地堡/ AngularFire授权错误,但我得到一个错误Property 'catch' does not exist on type 'FirebaseListObservable<any[]>'.
授权错误与FirebaseListObservable
的问题是,当我没有访问基于对一些数据处理认证规则。当我通过身份验证时,代码将工作(没有.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读取权限以允许任何人读取数据,但我试图处理此错误情况,以使我的代码更安全,以防有人得到部分应用程序试图处理数据,但安全性不允许他们访问数据。
这也给出了一个错误:类型'Subscription'不能分配到类型'FirebaseListObservable'。属性'$ ref'缺少'Subscription'类型。' –
呵呵。我希望能够发挥作用。希望有一个比我更有见识的人出现并且给你一只手,因为我不知道。抱歉。 – TheCog
没问题,谢谢。尽管如此,你让我走上正轨。我使用它来查找另一个来源,指示我不应将结果直接分配给FirebaseListObject,而是将它们推入。这适用于直接向前数组,但不适用于结构化数据数组。我正在进一步调查。 –