【问题标题】:List nodes from Firebase database [duplicate]列出 Firebase 数据库中的节点 [重复]
【发布时间】:2019-05-18 03:54:41
【问题描述】:

我尝试从 Firebase 读取数据,但它不起作用

这是我尝试过的:

DatabaseReference databaseRef = FirebaseDatabase.instance.reference();
await databaseRef.child('...').once().then((DataSnapshot snapshot) {
  print(snapshot.value);

});

结果(OKAY):

结构是:

 id1
    key1 = val1
 id2
    key2 = val2

我想获取每个 val(例如:val1、val2 等)

我试过了:

  snapshot.value.forEach((d) {
    //print(d);
  });

但我明白了:

有什么想法吗?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database flutter


    【解决方案1】:

    目前无法在 Flutter 中循环遍历 DataSnapshot 的子节点。见this issue我不久前创建的。

    如果顺序无关紧要,您应该能够从快照中获取Map,然后循环遍历那个

    Map<dynamic,dynamic> map = snapshot.value;
    map.forEach((key, value) { print('$key: $value'); });
    

    更新:自 2021 年年中以来,DataSnapshot 类现在具有 children 属性,这意味着您终于可以这样做了:

    snapshot.children.forEach((child) {
      print(child.value);
    });
    

    【讨论】:

    • 它运行良好,但是当我在 forEach 中添加 sthg 异步时(例如:await cacheManager.getFile(url),然后我得到“错误:意外的令牌 'await'。”,有什么想法吗?跨度>
    • 通常这意味着您必须将包含方法标记为async。但是您在问题中的代码没有调用异步函数,因此很难确定。
    • 确实,我已经在方法中使用了“异步”,并且在从 Firebase 检索数据之前,“等待”就可以工作了,知道吗?我编辑了代码以更好地解释:stackoverflow.com/questions/53821776/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    相关资源
    最近更新 更多