2016-09-29 41 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