java - 如何从 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,紧急,任务挑战,下降,协作,每日,技术,正常]}
解决方案
当您调用DocumentSnapshot.getData()时,它会返回一个地图。您只是在该地图上调用 toString(),这将为您提供文档中所有数据的转储,这并不是特别有用。您需要dungeon_group
按名称访问该字段:
DocumentSnapshot document = task.getResult();
List<String> group = (List<String>) document.get("dungeon_group");
- 编辑:类型转换中的语法错误
推荐阅读
- android - 如何禁用“从顶部向下滑动以退出全屏”消息
- ios - 如何在 AR 应用中同时包含和运行图像跟踪配置和世界跟踪配置
- javascript - Firebase 数据库路径无效错误
- aws-cognito - 如何通过 cognito 访问令牌更改我的 CognitoIdentityCredentials
- database - 更改 AWS RDS 数据库实例上的安全组
- c++ - Boost:多索引:如何遍历匹配非唯一有序索引的所有结果?
- java - 我可以为 JFormattedText 定义长度吗?
- 3d - 如何在 Godot 引擎中拖动 KinematicBody (3D)
- ubuntu - 如何从 CMake 访问 Beast on Boost 1.66 和 1.67
- laravel-5 - Laravel:表单操作和路由错误。[Route: ] [URI: {id}] 缺少必需的参数