使用 AngularFire2 处理 Firebase 权限错误
Handling Firebase permission errors with AngularFire2
我在 Firebase 中有一个集合,可能偶尔会被没有正确权限的用户访问。现在发生这种情况时,我在控制台中收到一堆警告和未捕获的异常,似乎无法正确处理它们。我通常订阅这样的可观察对象:
this.af.database.object('/someLocation/abc').subscribe(obj => {
// logic
});
在不放松安全规则的情况下,处理这些未处理异常的最佳方法是什么?
您可以将错误处理程序传递给您的 subscribe
调用:
this.af.database.object('/someLocation/abc').subscribe(
obj => {
// logic
},
error => {
// handle/report the error
}
);
这应该会从控制台中删除未处理的 errors/rejected 承诺,但 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");
});
我在 Firebase 中有一个集合,可能偶尔会被没有正确权限的用户访问。现在发生这种情况时,我在控制台中收到一堆警告和未捕获的异常,似乎无法正确处理它们。我通常订阅这样的可观察对象:
this.af.database.object('/someLocation/abc').subscribe(obj => {
// logic
});
在不放松安全规则的情况下,处理这些未处理异常的最佳方法是什么?
您可以将错误处理程序传递给您的 subscribe
调用:
this.af.database.object('/someLocation/abc').subscribe(
obj => {
// logic
},
error => {
// handle/report the error
}
);
这应该会从控制台中删除未处理的 errors/rejected 承诺,但 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");
});