在Firestore Android中查询子集合的字段并获取父DocumentSnapshot

时间:2020-09-19 16:02:52

标签: android firebase kotlin google-cloud-firestore

如果其他用户在手机上保存了我的电话号码,我想获取他的个人资料数据。现在,我正在查询contacts子集合内的手机字段。当我进行查询时,我会获得以下文件的快照:子集合的文档。但是,我想获取该用户的完整个人资料数据,因此,我需要获取父快照。如何实现此目标,否则必须更改firestore的结构?预先感谢

[This is how my firestore structure looks1

db.collectionGroup("contacts")
        .whereEqualTo("mobile",preference.getMobile()?.number)..get().addOnSuccessListener { snapShots ->
        val list = ArrayList<UserProfile>()
        for (s in snapShots) {
               //here i'm getting the contact data
           val contact = s.toObject(ModelMobile::class.java)
              //My need is getting userProfile Data
            /* val contact = s.toObject(UserProfile::class.java)
             list.add(contact)")*/
        }
    }

1 个答案:

答案 0 :(得分:2)

在对联系人子集合进行查询之后,您将需要对父文档进行另一个查询。在单个查询中无法同时获得它们。

for (s in snapShots) {
    var parentDocRef = s.reference.parent.parent
    // Now you have to get() the parentDocRef to get its contents
}