gpt4 book ai didi

java - 安卓 Firebase Firestore : Get data from deep in Firestore document

转载 作者:行者123 更新时间:2023-11-29 23:23:52 24 4
gpt4 key购买 nike

我有一个 firestore 数据库文档,基本上看起来像这样:

{
"name": "George",
"weeks": [
{
"checked": true,
"days": [
{
"checked": true,
"exercises": [
{
"exercise": "Bench Press",
"sets": [
{
"weight": 300,
"reps": 20
},
{
"weight": 400,
"reps": 30
}
]
}
]
}
]
}
]
}

我知道我可以通过以下方式获取文档的数据:

FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference userRef = db.collection("users");
Query usersDataQuery = userRef.whereEqualTo("name", "George");

usersDataQuery.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
for(QueryDocumentSnapshot document: task.getResult()){
Log.d("data = ", document.getId() + " => " + document.getData());
}
}
}
});

但随后 document .getData() 返回为:

2 => {weeks=[{days=[{exercises=[{sets=[{weight=300, reps=20}, {weight=400, reps=30}, {weight=500, reps=40}], exercise=Bench Press}, {sets=[{weight=300, reps=20}, {weight=400, reps=30}, {weight=500, reps=40}], exercise=Skull Crushers}, {sets=[{weight=300, reps=20}, {weight=400, reps=30}, {weight=500, reps=40}], exercise=Flyes}, {sets=[{weight=600, reps=20}, {weight=900, reps=30}, {weight=780, reps=40}], exercise=Incline Bench Press}], checked=true}], checked=true}], name=George}

而且我无法获得“集合”的第一个索引中的权重。你会认为你可以做这样的事情:document.getData()["weeks"][0]["days"][0]["exercises"][0]["sets"][0]["weight"] 但是我还没有找到这样做的方法。让我知道是否有一个好的解决方案来获取这样的数据。

最佳答案

从 API 文档中可以看出,getData()返回文档中所有字段及其值的映射。您需要深入了解这些值(value)观。

另请注意,文档中的每个字段值都将显示为描述每个值的适当 Java 类型。因此,如果字段包含对象,则字段值类型将为 Map<String,Object>其键和值将成为该对象的属性和值。如果一个字段值包含一个数组,你会得到一个 List<Object>包含数组的每个值。

由于您有很多嵌套列表和对象,您最终将编写大量代码来解压缩每个列表和映射以发现您的数据。您可能最终会进行大量调试日志记录以了解如何有效地执行此操作。

关于java - 安卓 Firebase Firestore : Get data from deep in Firestore document,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53837729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com