如何访问 Firestore 子集合中字段的值

我的数据库如下所示:

https://img1.sycdn.imooc.com/65425a58000188f817750389.jpg

当我没有“红色区域”的集合名称时,如何访问“绿色区域”中显示的字段的值?

  • 如何循环遍历“红色区域”集合以查找字段“RequestStatus”等于“Completed”的所有集合?


喵喔喔
浏览 90回答 2
2回答

慕森卡

如果没有集合,您将无法检索文档值。所以我建议将收藏名称更改为友谊状态。然后您可以轻松检索文档的字段。它需要是这样的:FriendShip---->Current User id     --->Friendship Status         -----> Document id然后您可以使用orderby或Equalto函数。上述结构的代码。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与您的查询类似的文档

RISEBY

无法使用客户端 SDK(Android、iOS、Web)列出文档的子集合。另一方面,“ getCollections()Cloud Firestore服务器客户端库的方法列出了文档引用的所有子集合”。由于您似乎正在使用 Android SDK,因此您需要找到解决方法。一种可能的解决方法是将子集合名称保存在父文档的专用字段中。例如,您可以使用数组字段来存储子集合的所有名称。当您使用 Android SDK 创建子集合的第一个文档时,您通常会填充此字段。如果出于某种原因,您无法从客户端执行此操作,您可以使用云功能,它依赖于 Admin SDK,因此可以使用getCollections()上面提到的方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java