Json 通过firebase节点的颤振循环,该节点由单节点和带子节点的节点组成
我有一段代码:Json 通过firebase节点的颤振循环,该节点由单节点和带子节点的节点组成,json,firebase,dart,flutter,Json,Firebase,Dart,Flutter,我有一段代码: routineExersiceIDsetter() async{ String routineId; final response = await reference.child(_userId).once(); response.value.forEach((k,v){ if(v["name"] == "First Routine"){ currentRoutineId = k; routineI
routineExersiceIDsetter() async{
String routineId;
final response = await reference.child(_userId).once();
response.value.forEach((k,v){
if(v["name"] == "First Routine"){
currentRoutineId = k;
routineId = k;
}
});
final response2 = await reference.child(_userId).child(currentRoutineId).once();
response2.value.forEach((k, v){
if(v["name"] == "Day 1"){
currentSchemeId = k;
}
});
}
这是firebase数据库的一部分
{
"-LBNflaqFEb4DtZiYxnh" : {
"-LBWa99g4yCstUBkDGa7" : {
"name" : "Day 1"
},
"name" : "First Routine"
}
}
第一条forEach行可以工作,但第二条不行。有没有办法让这项工作正常进行,或者我是否需要更改我的firebase体系结构?我意识到应该将第二个ifstatement包装到另一个ifstatement中:
if(k!="name"){
if(v["name"] == "Day 1"){
currentSchemeId =k;
}
}
你不需要把这两个请求连在一起吗?对Firebase的查询是异步的,因此您应该等待第一个查询解析为currentRoutineId值,然后才能执行第二个查询。我不知道如何在dart中链接它,因此我无法帮助您提供完整的解决方案。@RenaudTarnec我想我已经在等待请求中这样做了。我得到的结果是:类型“String”不是“index”的类型“int”的子类型,我不知道dart,但我感觉您没有链接这两个
wait
s。您确定currentRoutineId
在第二个'wait'中的值正确吗?你能用控制台或日志检查吗?@RenaudTarnec从我看到的情况来看,它得到了正确的routineid,但在第二个foreach中仍然给出了一个错误。你到底想做什么?因为似乎所有的信息都在一个节点下