Javascript node.js:遍历嵌套的firebase JSON树
我正在尝试从node.js访问嵌套的firebase树,如下所示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); });
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”按钮上的提示。