首页 > 解决方案 > 动态孩子的firebase分页

问题描述

我目前正在考虑如何使用 firebase 实现分页。我了解如何对按静态值排序的数据进行分页,例如帖子的时间戳。您只需将查询限制为特定数量(例如 5 个帖子),保存最后一项静态值(例如时间戳),然后再次重复查询,从最后一项静态值(时间戳)开始。但是,当您想对一个值不断变化的孩子进行分页时会发生什么?例如,按孩子排序的数据:“评级”。随着其他用户不断评级,“评级”可以随时更改。因此,当我查询后 5 个帖子时,查询的前 5 个帖子可能不再是评分最高的 5 个帖子。

标签: firebasepagination

解决方案


假设您查询排名前 5 的费率帖子:

id: a, rating 5.0
id: b, rating 4.9
id: c, rating 4.8
id: d, rating 4.7
id: e, rating 4.6

这是一个实时查询,因此它会随着基础数据的变化而更新。假设有人给 itemc一个非常低的评分,因此它的平均值变为4.0。这意味着c从查询快照中消失,并且下一个评分最高的项目被拉入,导致:

id: a, rating 5.0
id: b, rating 4.9
id: d, rating 4.7
id: e, rating 4.6
id: f, rating 4.5

因此,结果集中仍有 5 个项目。

在分页方面,这个新页面的最后一项仍然是下一页的锚点。


推荐阅读