2016-09-29 66 views
3

我有以下对象:如何检索由Firebase生成的对象ID?

root: { 
    id1: { /* this is an autogenerated id by Firebase */ 
    name1: "abc", 
    name2: "xyz" 
    }, 
    id2: { 
    name1: "abc", 
    name2: "xyz" 
    }, 
    id3: { 
    name1: "abc", 
    name2: "xyz" 
    }, 
} 

我的代码中检索到整个快照:

getRoot() { 
    firebase.database().ref ('roots/') 
     .on('value', function (snapshot) { 
     console.log (snapshot.val()); 
     }) 
    } 

一切都是完美的。我从根组件获得了每个对象,但我无法弄清楚如何访问这些ID及其子项?谢谢!

回答

5

我不记得我发布了这个问题。我很久以前才知道如何做到这一点。

这里是代码,将做的工作:

服务:

myFunction() { 
    var ref = firebase.database().ref ('roots') 
    return new Promise ((resolve, reject) => { 
    ref.on ('value', function (snapshot) { 
     if (snapshot.val() == null) { 
     reject (null); 
     } else { 
     var list = new Array(); 
     snapshot.forEach (function (data) { 
      var item = { 
      key: data.key, //this is to get the ID, if needed 
      name1: data.val().name1, 
      name2: data.val().name2, 
      } 
      list.push (item); 
     }); 
     resolve (list); 
     } 
    }); 
    }); 
} 

组件:

this.myService.myFunction().then (objects => { 
    this.objects = objects; 
    for (let obj of this.objects) { 
    console.log (obj.key); 
    } 
}).catch (error => { 
    alert ('Nothing found'); 
}) 

祝你快乐编码!

0

更改这行代码:

firebase.database().ref ('roots/') 

这样:

firebase.database().ref ('roots/id1/name1') 

这将让 '名1' 的值。

+1

这应该返回每个对象的参数。但我需要检索所有对象列表。 – RaulGM