Firebase Firestore:使用游标分页

Firebase Firestore:使用游标分页,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,为什么服务器库(java/nodejs等)不支持查询分页。我正在寻找通过服务器端的大型数据集进行分页。与GAE/J类似,最好使用websafe游标,该游标可以发送到客户端 提前感谢,服务器SDK确实支持分页之类的功能,但需要注意 web、Android和iOS SDK允许您使用文档快照作为查询的光标(使用startAfter),其工作方式与您预期的一样。服务器SDK需要指定一组值。如果你的价值观是独一无二的,那么这很好;如果不是,则不安全,因为具有重复项的值可能是当前批处理中的最后一个元素: c

为什么服务器库(java/nodejs等)不支持查询分页。我正在寻找通过服务器端的大型数据集进行分页。与GAE/J类似,最好使用websafe游标,该游标可以发送到客户端


提前感谢,

服务器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

以下是有关云计算Firestore的更多信息。

谢谢威尔。我正在考虑以下分页方法。按时间戳对集合进行排序,并将limit设置为100,然后使用最后一个元素的时间戳作为下一个查询的起始。你认为这种方法有什么问题吗?再次感谢你的帮助。嘿,很乐意帮忙。两个问题:1。我猜这不太可能,但你不会有100个相同的时间戳,对吧?否则你会遇到我描述的第二个问题。2.注意时间戳:在高容量时,您可能会遇到写入顺序值的限制(每秒500次)。(并且不要忘记将其标记为答案。如果),请注意时间戳:在高容量时,您可能会遇到写入值的限制(每秒500次)。这是一个很好的捕捉。我以前没有注意到这一点。ThanksI我正在使用Java server SDK,看起来像是基于光标的分页(使用
startAfter(QueryDocumentSnapshot)
工作。这是新功能吗?Firestore文档仍然说它不受支持。