我有一个firebase结构,如下所示:
<root>
|-my-app-name
|-post
|-<uid1>
|-negatedtimestamp
|-sub nodes
|-...
|-<uid2>
|-negatedtimestamp
|-sub nodes
|-...
我通过limitToFirst(10)
和orderbyChild("negatedtimestamp")
完成了我的分页,以检索最近的10个项目。最后一个uid已保存,并在loadmore()中使用startAt(<uid>)
再次查询。
就可伸缩性而言,当节点发布增长到十万或几十万时,查询第一个/最后一个将导致更慢的时间,因为它要求数据库考虑所有节点。有一个解决方案是通过仅将最近10个项目的密钥存储在另一个节点中,检索它们,并直接从父节点读取。这是在这里建议的:https://stackoverflow.com/a/39713060/9088278
但是,为了执行分页,当loadmore()
函数被命中时,最近的10个节点正在改变,因为它需要加载旧的10,然后再加载旧的10。我怎么能用这种方式做分页呢?或者有其他选择吗?