Google cloud firestore Firestore:使用光标分页

Google cloud firestore Firestore:使用光标分页,google-cloud-firestore,Google Cloud Firestore,我正在尝试使用Firestore对数据进行分页,并且将在需要重复的列上对数据进行排序,如果分页恰好在这些值中,那么它将无法正常工作 我可以根据文档ID使用StartAfter来解决这个问题,文档ID始终是唯一的 实现这一点的一种方法是将最后一个文档的id传递给服务器端RESTAPI请求。这需要两个步骤,即使用DocumentId获取DocumentSnapshot和基于它构造查询 var lastSnapshot=fetchSnapshot(id); citiesRef.OrderBy(“人口”

我正在尝试使用Firestore对数据进行分页,并且将在需要重复的列上对数据进行排序,如果分页恰好在这些值中,那么它将无法正常工作

我可以根据文档ID使用StartAfter来解决这个问题,文档ID始终是唯一的

  • 实现这一点的一种方法是将最后一个文档的id传递给服务器端RESTAPI请求。这需要两个步骤,即使用DocumentId获取DocumentSnapshot和基于它构造查询

    var lastSnapshot=fetchSnapshot(id); citiesRef.OrderBy(“人口”).StartAfter(lastSnapshot)

  • 另一种方法是在创建文档时在文档中持久化DocumentId。这需要在每次创建文档时执行两个步骤,一个是创建,另一个是使用生成的Id立即更新(因为我看不到在创建过程中持久化DocumentId的方法)

    citiesRef.OrderBy(“人口”).StartAfter(lastId)


  • 以下哪种方法是一种好的方法,或者获取DocumentSnapshot,而不是将id持久化到文档中,或者执行两个操作,首先持久化DocumentId,然后将其用作StartAfter的键。

    决定使用选项1,不要像选项2那样将文档ID保存在文档本身中。

    为什么不使用中介绍的解决方案?根据文档,您只能减少歧义,而不能消除歧义,除非列顺序基于唯一值:当使用基于字段值(而非DocumentSnapshot)的光标时,通过添加其他字段,可以使光标位置更精确。如果您的数据集包含多个文档,这些文档的光标字段值都相同,从而导致光标位置不明确,那么这一点尤其有用。可以向光标添加其他字段值,以进一步指定起点或终点,并减少歧义。