我的数据库如下:
当我没有“红色区域”的集合名称时,如何访问“绿色区域”中显示的字段的值?
答案 0 :(得分:2)
没有收集就无法检索文档值。因此,我建议将收藏名称更改为“友谊”状态。然后,您可以轻松地检索文档的字段。
它必须像这样:
FriendShip
---->Current User id
--->Friendship Status
-----> Document id
以上结构的代码。
mfirebaseFirestore.collection("Friendship").document(mCurrentUser).collection("FriendshipStatus")
.whereEqualTo("RequestStatus", "Completed")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d("abc", document.getId() + " => " + document.getData());
}
} else {
Log.d("abc", "Error getting documents: ", task.getException());
}
}
});
注意:
Whereequalto
在您尝试在集合中查找数据时有效。因此,您必须查询直到收集。然后使用whereequalto
来记录与您的查询相似的文件
答案 1 :(得分:1)
如documentation中所述,无法使用客户端SDK (Android,iOS,Web)列出文档的子集合。
另一方面,“ Cloud Firestore 服务器客户端库的getCollections()
方法列出了文档引用的所有子集合”。
由于您似乎正在使用Android SDK,因此需要找到解决方法。一种可能的解决方法是将子集合名称保存在父文档的专用字段中。例如,您可以使用Array字段存储子集合的所有名称。
通常,当您使用Android SDK创建子集合的第一个文档时,会填充此字段。
万一出于某种原因,您不能从客户端执行此操作,则可以使用依赖于Admin SDK的Cloud Function,因此可以使用上面提到的getCollections()
方法。