How to iterate through nested firebase objects.
Publications-
|
|-Folder1------
| |-hdgjg76675e6r-
| | |-Name
| | |-Author
| |
| |+-hdgjdsf3275e6k
| |+-hd345454575e6f
|+-Folder2
In publications I have folders and in folders I have objects (containing properties like. Name, Author)
I have iterated through folders till now.
snapshot.forEach(function (snapshot) {
var key = snapshot.key();
var obj = snapshot.val();
console.log(key);
//output => Folder1 , Folder2 etc
});
When I print obj
console.log(obj);
It displays
How do I iterate through obj variable as it contains hdgjg76675e6r
, hdgjdsf3275e6k
etc and further?
How to iterate through nested firebase objects.
Publications-
|
|-Folder1------
| |-hdgjg76675e6r-
| | |-Name
| | |-Author
| |
| |+-hdgjdsf3275e6k
| |+-hd345454575e6f
|+-Folder2
In publications I have folders and in folders I have objects (containing properties like. Name, Author)
I have iterated through folders till now.
snapshot.forEach(function (snapshot) {
var key = snapshot.key();
var obj = snapshot.val();
console.log(key);
//output => Folder1 , Folder2 etc
});
When I print obj
console.log(obj);
It displays
How do I iterate through obj variable as it contains hdgjg76675e6r
, hdgjdsf3275e6k
etc and further?
3 Answers
Reset to default 5You obj
is just a normal javascript object, you can just use a simple for loop:
for(var key in obj) {
console.log(obj[key]);
}
or you can use again a forEach
on your snapshot:
folderSnapshot.forEach(function (objSnapshot) {
objSnapshot.forEach(function (snapshot) {
var val = snapshot.val();
console.log(val); // Should print your object
});
});
Will the tree increase in depth? If not, then the best solution here is to just do a double for loop.
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;
});
});
No need to over-engineer things, in my opinion.
Heres simple way how you can get your object of objects to array of objects:
var myObject = {key1: {name: 'hello'}, key2: {name: 'hello2'}};
var myArrayOfObject = Object.values(myObject);
console.log(myArrayOfObject);
// Result: (2) [Object, Object]