首页 > 解决方案 > 如何从 Firestore 获取数组?

问题描述

我将下图所示的数据结构存储在 Cloud Firestore 中。我想保存dungeon_group存储在 Firestore 中的字符串数组。

我很难获取数据并将其存储为数组。我只能得到一个奇怪的字符串,但是有什么方法可以存储为字符串数组吗?下面是我使用的代码。

我可以在 Swift 中按如下方式实现这一点,但不确定如何在 Android 中做到这一点。

在此处输入图像描述

迅速:

Firestore.firestore().collection("dungeon").document("room_en").getDocument { 
    (document, error) in
    if let document = document {
        let group_array = document["dungeon_group"] as? Array ?? [""]
        print(group_array)
    }    
}

Java安卓:

FirebaseFirestore.getInstance().collection("dungeon")
                 .document("room_en").get()
                 .addOnCompleteListener(new 
                     OnCompleteListener<DocumentSnapshot>() {
                     @Override
                     public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                         DocumentSnapshot document = task.getResult();
                         String group_string= document.getData().toString();
                         String[] group_array = ????
                         Log.d("myTag", group_string);
                     }
                 });

控制台输出如下:

{dungeon_group=[3P,紧急,任务挑战,下降,协作,每日,技术,正常]}

标签: javaandroidfirebasegoogle-cloud-platformgoogle-cloud-firestore

解决方案


当您调用DocumentSnapshot.getData()时,它会返回一个地图。您只是在该地图上调用 toString(),这将为您提供文档中所有数据的转储,这并不是特别有用。您需要dungeon_group按名称访问该字段:

DocumentSnapshot document = task.getResult();
List<String> group = (List<String>) document.get("dungeon_group");
  • 编辑:类型转换中的语法错误

推荐阅读