node.js:遍历嵌套的firebase JSON树
我试图从node.js访问一个嵌套的firebase树,如下所示。
ref.forEach( function(snapshot0) { snapshot0.child("Meals").forEach( function(snapshot1) { console.log(snapshot1.val); }); });
而且它总是会告诉我,ref.forEach不是一个函数。
TypeError: refPrices.forEach is not a function
我已经定义如下。
var db = admin.database(); var ref = db.ref("users");
我已经检查了这些答案
如何使用Firebase / Node.js迭代大型数据集?
遍历嵌套的firebase对象 – Javascript
通过嵌套的JSON树遍历并更改值
但我相信根据我的上述代码应该工作,所以我很困惑。 另外,我试图用循环replace每个,但是我得到了
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
所以我几乎还有同样的问题。 我无法弄清楚我的例子与上面的解决scheme的链接有什么不同?
编辑:这是我的JSON树看起来像(根据弗兰克的要求)。 我只缩短了一些用户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数据库中某些数据的path。 数据本身不在ref中,所以你不能循环数据。
在第二个片段中很难说出什么问题,因为我们不知道/users
下面的数据是什么样的。 请编辑您的问题,以包含JSON的最小片段(如文本,请勿截图),这是重现问题所必需的。 您可以通过点击Firebase数据库控制台中的“导出JSON”链接来获取此信息。
更新
如果您检索/users
的值,您将获得所有用户的快照。 所以第一级的孩子是每个用户的节点。 然后在那里你有每个用户的饭菜。 你的代码缺less第一级的循环,所以:
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推荐的数字索引。 有关数组和Firebase文档的处理集合的 信息,请参阅此博客文章 。
- 如何使用云端function发送Firebase数据
- 如何在不知道Firebase和Firebase-admin中的密钥的情况下让孩子一触即发
- Firebase – NodeJS:用于Google API的OAuth2域范围委派
- 如何使Async API工作?
- 使用nodejs更新firebase中的数据
- Firebase的云端function:pipe理员与根查找
- Firebase在一个队列上排队多个规格都会被执行,或者被错误的执行
- Firebase:如何以编程方式为类似于`firebase.auth()。currentUser.getIdToken(false)`的特定用户生成一个jwt标记?
- Cloud Functions和Nodejs中的firebase.database.refpath语法