javascript – FirebaseListObservable在查询后变为Observable

我在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);
点赞