Javascript node.js:遍历嵌套的firebase JSON树

Javascript node.js:遍历嵌套的firebase JSON树,javascript,json,node.js,firebase,firebase-realtime-database,Javascript,Json,Node.js,Firebase,Firebase Realtime Database,我正在尝试从node.js访问嵌套的firebase树,如下所示 ref.forEach( function(snapshot0) { snapshot0.child("Meals").forEach( function(snapshot1) { console.log(snapshot1.val); });

我正在尝试从node.js访问嵌套的firebase树,如下所示

ref.forEach( function(snapshot0) {
    snapshot0.child("Meals").forEach( function(snapshot1) {                                                            
        console.log(snapshot1.val);
    });                         
});
var db        = admin.database();
var ref       = db.ref("users");
它总是告诉我ref.forEach不是一个函数

 TypeError: refPrices.forEach is not a function
我将这些定义如下

ref.forEach( function(snapshot0) {
    snapshot0.child("Meals").forEach( function(snapshot1) {                                                            
        console.log(snapshot1.val);
    });                         
});
var db        = admin.database();
var ref       = db.ref("users");
我已经核对了这些答案

但我相信根据这些,我上面的代码应该是有效的,所以我真的很困惑。另外,我尝试用循环替换forEach,但我得到了

TypeError: ref.length is not a function
所以我无法计算循环的最大值。我也试过了

ref.once("value", function(snapshot0) {
    snapshot0.child("Meals").forEach( function(snapshot1) {                                                            
        console.log(snapshot1.val);
    });                         
});
但在这种情况下,它抛出了错误

TypeError: snapshot0.forEach is not a function
所以我还是有同样的问题。我无法找出我的示例与上述解决方案的链接有何不同

编辑:以下是我的JSON树的样子(根据Frank的要求)。我只是把用户ID缩短了一点

"users" : {
    "ugkvjTuXW2" : {
        "Meals" : {
            "Meal_2" : {
                "priceHist" : [ null, 1, 1, 1, 1, 1, 1 ]
            },
            "Meal_3" : {
                "priceHist" : [ null, 1, 1, 1, 1, 10, 1 ]
            },
            "Meal_4" : {
                "priceHist" : [ null, 1, 1, 1, 1, 1, 1 ]
            },
            "Meal_5" : {
                "priceHist" : [ null, 1, 1, 1, 1, 1, 1 ]
            }
         }
    },
    "oJJ1Cojia2" : {
        "Meals" : {
            "Meal_2" : {
                "priceHist" : [ null, 1, 4, 4, 1, 1, 1 ]
            },
            "Meal_3" : {
                "priceHist" : [ null, 1, 1, 1, 1, 10, 1 ]
            },
            "Meal_4" : {
                "priceHist" : [ null, 1, 5, 1, 1, 7, 1 ]
            },
            "Meal_5" : {
                "priceHist" : [ null, 3, 1, 1, 1, 12, 1 ]
            }
         }
    }
} 

在您的第一个代码片段中:
DatabaseReference
只不过是Firebase数据库中某些数据的路径。数据本身不在ref中,因此不能在数据上循环

很难说您的第二个代码段出了什么问题,因为我们不知道
/users
下的数据是什么样子的。请编辑您的问题,以包含重现问题所需的JSON的最小片段(文本形式,请不要截图)。您可以通过单击页面中的“导出JSON”链接来实现这一点

更新

如果检索到
/users
的值,则会得到所有用户的快照。因此,第一级子节点是每个用户的一个节点。然后在那里,你可以为每个用户提供膳食。您的代码缺少第一级的循环,因此:

var ref = admin.database().ref("users");
ref.once("value", function(userSnapshot) {
    userSnapshot.forEach(function(userSnapshot) {
        userSnapshot.child("Meals").forEach(function(mealSnapshot) {                                                                
            console.log(mealSnapshot.val());
        });                         
    });
});

还要注意,您使用的是数值索引,Firebase建议不要使用。请参阅和。

您能详细发布
ref
变量吗?您知道
userId
吗?谢谢,我在上面添加了JSON结构。感谢您在“导出JSON”按钮上的提示。