在Android上获取Firestore子集合

时间:2019-06-17 19:59:24

标签: android google-cloud-firestore

我的Android应用在路径val documentName = "pets/$userid/$animal/$animalId"之后的Firestore中保存了文档。 动物可以是猫,狗,鸟等。我想让特定用户拥有所有宠物,然后想遍历宠物列表。我怎么做?我没有找到一个例子。所以基本上我有

firestore.document("pets/$userId").get().addOnSuccessListener {
    // now what?
}

2 个答案:

答案 0 :(得分:0)

没有办法遍历客户端SDK中的所有集合,也没有办法查询具有不同名称的集合。

因此,唯一的真实选择是对每个子集合执行单独的查询:

firestore.document("pets/$userId/cat").get()...
firestore.document("pets/$userId/dog").get()...
firestore.document("pets/$userId/bird").get()...

然后将它们合并到客户端。

我还要考虑您是否真的需要这些子集合。您还可以将所有它们存储在一个子集合中,并使用字段来区分动物类型。那是一个更简单的模型,对于该用例可能会很好地工作。

答案 1 :(得分:0)

您不能在单个查询中跨多个子集合进行查询。查询必须针对单个集合或子集合(或针对所有具有完全相同名称的集合的集合组查询)。此外,Firestore客户端SDK也无法列出文档下的子集合。

您可能应该重组数据以支持您要进行的查询,这意味着将整个事物列表放入具有可预测名称的单个子集合中。