javascript - FirebaseListObservable 查询后变为 Observable

标签 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[]>;

//这将返回一个常规的可观察对象。

this.resources$ = <FirebaseListObservable<IResource[]>> this.af.list(`/resources/${this.auth.id}`,
  {
    query: {
      orderByChild: `${property}`
    }
  }
) as FirebaseListObservable<IResource[]>;

但这会返回一个普通的旧 Observable。问题是我需要一个 FirebaseListObservable,因为它添加了 CRUD 功能,我正在尝试编写简单的过滤器/排序方法。

我可以看到他们有一个 Open Issue为此,但我希望尽快找到解决此问题的方法。票证中讨论的解决方案描述了扩展 FirebaseListObservable 并覆盖 lift 方法以返回自定义可观察对象。我试图创建一个 CustomFirebaseListObservable 来执行此操作,但我似乎无法访问我的自定义可观察对象中的正确属性(observable.source 和 observable.operator)。我希望有一种方法可以将可观察对象转换为一个 firebaseListObservable。任何解决方法都可以。

最佳答案

如果您仍然遇到这个问题,也许您可​​以使用顺序创建 firebase 引用,然后将其传递给 angularfire?

let refPath = `/resources/${this.auth.id}`,
    ref = firebase.database().ref(refPath).orderByChild(property);
this.resources$ = <FirebaseListObservable<IResource[]>>this.af.list(ref);

关于javascript - FirebaseListObservable 查询后变为 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37933985/

相关文章:

javascript - 为什么主干过滤器收集在传递给 View 时失败

javascript - 如何计算javascript html字符串变量中的行数

node.js - visual studio 代码 - Node js 错误与 typescript 调试配置

javascript - Firebase 查询 : Why is child_added called before the value query in the following code?

javascript - 在node.js中做一系列的异步操作

javascript - RxJS - 仅当其他人在延迟期间不发射时发射

javascript - typescript 和 Jquery : what is the best practice to call a class into Jquery onclick function?

javascript - 如何添加推送到返回过滤数组的 getter 的功能?

java - Firebase OrderbyChild 查询返回父键

javascript - 仅在 Firebase 中按日期收听最后一个 child 的声音