为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

喵喔喔 2023-11-01 22:01:36
我的数据库如下所示:当我没有“红色区域”的集合名称时,如何访问“绿色区域”中显示的字段的值?如何循环遍历“红色区域”集合以查找字段“RequestStatus”等于“Completed”的所有集合?
查看完整描述

2 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

如果没有集合,您将无法检索文档值。所以我建议将收藏名称更改为友谊状态。然后您可以轻松检索文档的字段。


它需要是这样的:


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与您的查询类似的文档


查看完整回答
反对 回复 2023-11-01
?
RISEBY

TA贡献1856条经验 获得超5个赞

无法使用客户端 SDK(Android、iOS、Web)列出文档的子集合。

另一方面,“ getCollections()Cloud Firestore服务器客户端库的方法列出了文档引用的所有子集合”。

由于您似乎正在使用 Android SDK,因此您需要找到解决方法。一种可能的解决方法是将子集合名称保存在父文档的专用字段中。例如,您可以使用数组字段来存储子集合的所有名称。

当您使用 Android SDK 创建子集合的第一个文档时,您通常会填充此字段。

如果出于某种原因,您无法从客户端执行此操作,您可以使用云功能,它依赖于 Admin SDK,因此可以使用getCollections()上面提到的方法。


查看完整回答
反对 回复 2023-11-01
  • 2 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信