迭代嵌套的firebase对象 - Javascript

时间:2017-07-19 12:07:21

标签: javascript jquery firebase firebase-realtime-database

如何遍历嵌套的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);

显示

enter image description here

我如何迭代 obj 变量,因为它包含hdgjg76675e6rhdgjdsf3275e6k等并进一步?

3 个答案:

答案 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]