使用AngularFire2处理Firebase权限错误
我在Firebase中有一个集合,可能偶尔会被没有正确权限的用户访问。现在,当这种情况发生时,我在控制台中收到一堆警告和未捕获的异常,似乎不可能正确处理它们。我通常同意这样一种可观察的观点:使用AngularFire2处理Firebase权限错误,angular,typescript,firebase,firebase-realtime-database,angularfire2,Angular,Typescript,Firebase,Firebase Realtime Database,Angularfire2,我在Firebase中有一个集合,可能偶尔会被没有正确权限的用户访问。现在,当这种情况发生时,我在控制台中收到一堆警告和未捕获的异常,似乎不可能正确处理它们。我通常同意这样一种可观察的观点: this.af.database.object('/someLocation/abc').subscribe(obj => { // logic }); 在不放松安全规则的情况下,处理这些未经处理的异常的最佳方法是什么?您可以将错误处理程序传递给您的subscribe调用: this.af.
this.af.database.object('/someLocation/abc').subscribe(obj => {
// logic
});
在不放松安全规则的情况下,处理这些未经处理的异常的最佳方法是什么?您可以将错误处理程序传递给您的
subscribe
调用:
this.af.database.object('/someLocation/abc').subscribe(
obj => {
// logic
},
error => {
// handle/report the error
}
);
这将从控制台中删除未处理的错误/拒绝的承诺,但Firebase可能仍会在控制台中报告警告
另外,您应该知道,当可观察到错误时,任何订户都会自动取消订阅。因此,如果你得到一个错误,那就是它;不会发出更多的值
如果您正在组成可观察链,则在subscribe
中指定错误处理程序的替代方法是使用catch
操作符:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/catch';
let abc$ = this.af.database
.object('/someLocation/abc')
.catch(error => {
// handle the error
// and return an appropriate observable if you have one
// perhaps a default value or an empty observable, etc.
// or rethrow the error
// or return Observable.throw(new Error('Some error'))
return Observable.of("some-default-value");
});
非常感谢。我不知道我怎么会错过这个错误。可能从这开始的时间太长了。