javascript - 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,托管工作流。
解决方案
看来您正在使用 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()
子句的查询(即相同的查询)。将其视为“从我的上一个查询的此文档/快照之后开始”。
推荐阅读
- python - 通过蓝牙连续发送数据
- tensorflow - 必须使用“sudo”来导入张量流
- for-loop - 我在 golang 中尝试了 2 种样式的嵌套循环,但它有不同的输出
- mapreduce - 如何将输入路径传递给 MRJob.mapper_raw?
- java - 无法导入 com.vaadin.data.util.PropertysetItem
- html - How to display a long id of 26 digits to short id of 8 digits in vuejs
- python - Time.Sleep 替代方案?需要能够打破循环/返回主
- c# - 将多个 JSON 记录发送到 .NET 控制器
- c++ - 为什么多线程不能改进 mmap 任务?
- mysql - 如何避免 MySQL 的 case 语句中的双重计算?