我在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 并覆盖提升方法以返回自定义 observable。我试图创建一个 CustomFirebaseListObservable 来做到这一点,但我似乎无法访问正确的属性(observable.source 和 observable.operator 从我的自定义 observable 中。我希望有一种方法可以将 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);
关于javascript - FirebaseListObservable 在查询后变为 Observable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37933985/