gpt4 book ai didi

angular - 如何在 Angularfire2 Angular2 中对 FirebaseListObservable 列表进行排序?

转载 作者:太空狗 更新时间:2023-10-29 18:03:53 25 4
gpt4 key购买 nike

我想从 Firebase 实时数据库中获取所有用户,并按得分属性对他们进行排序。我已经使用变量
让它工作了 users: FirebaseListObservable<any[]>;
但我得到了错误:

Type 'Observable<any[]>' is not assignable to type 'FirebaseListObservable<any[]>'.
Property '_ref' is missing in type 'Observable<any[]>'.

如果我将变量更改为
users: Observable<any[]>;
然后错误消失了,但是我不能使用像 .push() 这样的 Angularfire 方法和 .update() .

我的抓取和排序代码(有效)如下所示:

this.users = this.af.database.list('/users')
.map(items => items.sort((a, b) => b.score - a.score));

对于如何避免错误或任何首选方式的任何建议,我将不胜感激,谢谢!

最佳答案

FirebaseListObservable 实现了 lift ,因此 RxJS 运算符 - 如 map - 将返回一个 FirebaseListObservable 实例。

只是 - 当使用 TypeScript 时 - RxJS 运算符被静态类型化以返回 Observable,所以你必须转换为 FirebaseListObservable。 (使用 RxJS 不必涉及 TypeScript,如果您查看 the guidance for adding operators,您会发现未提及类型。)

您可以通过查找问题中提到的 pushupdate 函数来验证是否返回了 FirebaseListObservable 实例:

this.users = this.af.database
.list('/users')
.map(items => items.sort((a, b) => b.score - a.score)) as FirebaseListObservable<any[]>;
console.log(this.users.push.toString());
console.log(this.users.update.toString());

但是请注意,这不适用于作为查询创建的 FirebaseListObservable 实例。有一个 as-yet-unanswered question关于这种情况。

关于angular - 如何在 Angularfire2 Angular2 中对 FirebaseListObservable 列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39133217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com