首页 > 解决方案 > 如何使用 Android 从 Cloud Firestore 中的地图中检索特定字段?

问题描述

这是保存在 firebase Firestore 中的数据的一部分:

在此处输入图像描述

如何在 Java 中fName从 ( ) 获取 ( ) ?newFriend0

这是代码的一部分。它给出了整个地图。我只想要一个特定的字段,例如 ("jem" for (fName))

Map<String, Object> map = document.getData();

for (Map.Entry<String, Object> entry : map.entrySet()){

if (entry.getKey().equals("Friends")){

f=document.getString("FName");////not worked

Log.d("TAG", entry.getValue().toString());
                                                   }
                                               }

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


编辑: 2201 年 7 月 16 日

事实上,有一种更简单的获取数据的方法:


看到你的代码是Java,请看下面的解决方案:

FirebaseFirestore.getInstance().collection("coll").document("9999").get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                Map<String, Object> friendsMap = document.getData();
                for (Map.Entry<String, Object> entry : friendsMap.entrySet()) {
                    if (entry.getKey().equals("Friends")) {
                        Map<String, Object> newFriend0Map = (Map<String, Object>) entry.getValue();
                        for (Map.Entry<String, Object> e : newFriend0Map.entrySet()) {
                            if (e.getKey().equals("newFriend0")) {
                                Map<String, Object> fNameMap = (Map<String, Object>) e.getValue();
                                for (Map.Entry<String, Object> dataEntry : fNameMap.entrySet()) {
                                    if (dataEntry.getKey().equals("fName")) {
                                        Log.d("TAG", dataEntry.getValue().toString());
                                    }
                                }
                            }
                        }
                    }
                }
            } else {
                Log.d("TAG", "No such document");
            }
        } else {
            Log.d("TAG", "get failed with ", task.getException());
        }
    }
});

您的 logcat 中的结果将是:

jem

在屏幕截图中没有看到您收藏的名称,所以我简单地命名了它,coll但您绝对应该将其更改为正确的名称。


推荐阅读