首页 > 解决方案 > 我需要更多的嵌套级别来阅读一个简单的(几乎是扁平的)FireBase

问题描述

我已经为一家农业公司的不同人员在不同的侧面加载的 iOS 应用程序和网络技术之间建立了一个相当复杂的关系,以跟踪他们作物中的各种重要事物。

这一切都很顺利,除了一件事是在嘲笑我的经历(或者我不知道如何侦探 Firebase 文档)。以下 .js 代码仅列出在名为“OPnotes”的杂项集合下输入的最后一个条目。(OFnotes 还有另一个属性)。

因此,我试图向网络显示的数据的表示是:

 |
OPnotes
 |   + -- OF-Ave-g9: "OF-Ave g9   ant nest"
 |   + -- OPA-2A-j5: "OPA-2A j5   excessive sap"
 |   + -- OPA-SR-k2: "OPA-SR k2   irrigation leak"
 |

我已经注释掉了 childkey 变量,因为我无法让它做任何事情。我会想到snapshot.forEach(将负责进行迭代。

<script>
    var noteRef = firebase.database().ref('OPnotes');

    noteRef.on('value', function(snapshot) {
        // this next line should set up iterations of each child
        snapshot.forEach(function(childSnapshot) {

            // var childKey = childSnapshot.key;
            var note = childSnapshot.val();
            document.getElementById("sh owNote").innerHTML = note;

         });
    });
</script>

当我将来自 GPS 读数和作物名称的足够不同的数据放在一起时,我将所有内容都保持为人类可读的,以便为各种员工制作独特的钥匙,以在他们的脑海中定位问题,这就是为什么部分钥匙在可见文本中重复的原因。我不认为这是这里的问题。

基本上问题是我真的需要制作一个更复杂的模式来阅读吗?

标签: javascriptfirebasefirebase-realtime-database

解决方案


确实循环结果中的snapshot.forEach每个子节点。但是你这样做document.getElementById("sh owNote").innerHTML = note了,这意味着每次你覆盖之前 HTML 元素中的任何内容。因此,在循环结束时,您最终会得到 HTML 中最后一个节点的值。

您可能正在寻找的是更接近于:

noteRef.on('value', function(snapshot) {
    document.getElementById("sh owNote").innerHTML += "";
    snapshot.forEach(function(childSnapshot) {
        var note = childSnapshot.val();
        document.getElementById("sh owNote").innerHTML += note + "<br/>";
     });
});

推荐阅读