首页 > 解决方案 > Firestore 复合查询分页

问题描述

我试图对复合索引查询进行分页,

let size = data.length
let lastElement = data[size-1].commentCount

db.collection('user-content').orderBy('commentCount','desc').orderBy('likes', 'desc').startAfter(lastElement).limit(10).get()

但我目前收到此错误消息

[未处理的承诺拒绝:FirebaseError:使用无效数据调用的函数 Query.startAfter()。不支持的字段值:未定义]

我认为它与 startAfter(lastElement)

我打开了复合索引,并且在我第一次加载时获取数据(没有 startAfter)

有谁知道如何使用复合查询进行分页?

我使用 Expo SDK41,托管工作流。

标签: javascriptreactjsfirebasegoogle-cloud-firestorepagination

解决方案


看来您正在使用 NUMBER - ( let lastElement = data[size-1].commentCount) - for .startAfter(lastElement)- 有点难以看到,因为您没有向我们展示data定义的位置,但 NAMEcommentCount确实暗示了它。

.startAfter()不期望一个数字;不存在它可以使用的索引或计数。 .startAfter()需要一个文档快照 -

https://firebase.google.com/docs/reference/js/firebase.firestore.Query#startafter

...预计来自具有完全相同的路径和.where()子句的查询(即相同的查询)。将其视为“从我的上一个查询的此文档/快照之后开始”。


推荐阅读