FirebaseListObservable在查询后变为Observable

时间:2016-06-21 00:49:05

标签: javascript typescript firebase-realtime-database rxjs angularfire

我在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。任何解决方法都可以。

1 个答案:

答案 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);