我在 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/