我在firebase上做了一个小应用程序.我一直在使用angularfire提供的类型,称为FirebaseListObservable,它允许您观察数据的变化.我遇到的问题是Angularfire还提供了一种查询数据的方法,方法是将查询对象附加/传递给请求.
以下命令返回FirebaseListObservable.
this.resources$= <FirebaseListObservable<IResource[]>> this.af.list(`/resources/${this.auth.id}`) as FirebaseListObservable<IResource[]>;
//这会返回一个常规的observable.
this.resources$= <FirebaseListObservable<IResource[]>> this.af.list(`/resources/${this.auth.id}`,
{
query: {
orderByChild: `${property}`
}
}
) as FirebaseListObservable<IResource[]>;
但这会返回一个普通的旧观察者.问题是我需要一个FirebaseListObservable,因为它添加了CRUD功能,我正在尝试编写简单的过滤/排序方法.
我可以看到他们有一个Open Issue,但我希望尽快解决这个问题.故障单中讨论的解决方案描述了扩展FirebaseListObservable并覆盖lift方法以返回自定义observable.我试图创建一个CustomFirebaseListObservable来做到这一点,但我似乎无法从我的自定义observable中访问正确的属性(observable.source和observable.operator.我希望有一种方法可以将一个observable转换为firebaseListObservable.任何解决方法都可以.
解决方法:
如果您仍然遇到此问题,也许您可以使用排序创建firebase参考,然后将其传递给angularfire?
let refPath = `/resources/${this.auth.id}`,
ref = firebase.database().ref(refPath).orderByChild(property);
this.resources$= <FirebaseListObservable<IResource[]>>this.af.list(ref);