我在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。任何解决方法都可以。
答案 0 :(得分:1)
如果您仍然遇到此问题,也许您可以使用排序创建firebase参考,然后将其传递给angularfire?
let refPath = `/resources/${this.auth.id}`,
ref = firebase.database().ref(refPath).orderByChild(property);
this.resources$ = <FirebaseListObservable<IResource[]>>this.af.list(ref);