【发布时间】:2017-10-27 12:32:45
【问题描述】:
为什么服务器库(java/nodejs 等)不支持查询分页。我正在寻找通过服务器端的大型数据集进行分页。类似于 GAE/J,最好使用 websafe cursor,可以发送到客户端。
提前致谢,
【问题讨论】:
标签: firebase google-cloud-firestore
为什么服务器库(java/nodejs 等)不支持查询分页。我正在寻找通过服务器端的大型数据集进行分页。类似于 GAE/J,最好使用 websafe cursor,可以发送到客户端。
提前致谢,
【问题讨论】:
标签: firebase google-cloud-firestore
服务器 SDK 确实支持分页之类的功能,但有一些注意事项。
Web、Android 和 iOS SDK 允许您使用文档快照作为查询的光标(使用 startAfter),这与您期望的一样。服务器 SDK 需要指定一组 值。如果你的价值观是独一无二的,这很好;如果不是,则不安全,因为具有重复项的值可能是当前批次中的最后一个元素:
current: 998, 999, 1000 | next: 1000, 1001, 1002
并且使用startAfter 将跳过下一批结果的第一个元素(1000)。您可以通过使用 startAt 并合并结果来解决此问题,但如果重复值的数量超过您指定的批量大小,您可能会卡住:
current: 1000, 1000, 1000 | next: 1000, 1001, 1002
这里有更多关于 Cloud Firestore 中 paginating data with query cursors 的信息。
【讨论】:
startAfter(QueryDocumentSnapshot) 有效。这是新事物吗?Firestore 文档仍然说不支持。