如何遍历嵌套的firebase对象。
Publications-
|
|-Folder1------
| |-hdgjg76675e6r-
| | |-Name
| | |-Author
| |
| |+-hdgjdsf3275e6k
| |+-hd345454575e6f
|+-Folder2
在出版物中我有文件夹和文件夹我有对象(包含属性,如。姓名,作者)
我已经遍历文件夹到现在为止。
snapshot.forEach(function (snapshot) {
var key = snapshot.key();
var obj = snapshot.val();
console.log(key);
//output => Folder1 , Folder2 etc
});
当我打印 obj
时console.log(obj);
显示
我如何迭代 obj 变量,因为它包含hdgjg76675e6r
,hdgjdsf3275e6k
等并进一步?
答案 0 :(得分:4)
你obj
只是一个普通的javascript对象,你可以使用一个简单的for循环:
for(var key in obj) {
console.log(obj[key]);
}
或者您可以在快照上再次使用forEach
:
folderSnapshot.forEach(function (objSnapshot) {
objSnapshot.forEach(function (snapshot) {
var val = snapshot.val();
console.log(val); // Should print your object
});
});
答案 1 :(得分:2)
树会增加深度吗?如果没有,那么这里最好的解决方案就是做一个双循环。
snapshot.forEach(function (snapshot) {
var key = snapshot.key();
var obj = snapshot.val();
console.log(key);
//output => Folder1 , Folder2 etc
obj.forEach(function (book) {
var title = book.title;
var author = book.author;
});
});
在我看来,不需要过度设计。
答案 2 :(得分:1)
如何将对象对象转换为对象数组的简单方法:
var myObject = {key1: {name: 'hello'}, key2: {name: 'hello2'}};
var myArrayOfObject = Object.values(myObject);
console.log(myArrayOfObject);
// Result: (2) [Object, Object]