如何使用TypeScript和Ionic 3获取Firebase中的所有root用户?

时间:2018-03-16 16:21:43

标签: typescript firebase firebase-realtime-database ionic3

我有这个Firebase数据库:

enter image description here

我需要得到alii-b9d94的所有uids(孩子)。但问题是:当我把它作为一个对象时,我无法访问该对象以从中获取值。

这是我能够得到它但我无法访问它: enter image description here

ts代码:

    import { Component } from '@angular/core';
    import { IonicPage, NavController, NavParams } from 'ionic-angular';

    import firebase from 'firebase';

    import { AuthService } from '../../services/auth';
    import { InfoService } from '../../services/info';


   @IonicPage()
   @Component({
selector: 'page-dash',
templateUrl: 'dash.html',
})

 export class DashPage {


     constructor(public navCtrl: NavController,
          public navParams: NavParams,
          private infoService: InfoService,
          private authService: AuthService) {

            firebase.database().ref().on('value', (snap) => {

            let rootVals = snap.val();
            let uids : string[] = [];

          /* I am trying to access this by this code but not working :(
   I knew the problem with .this but Is there any other way i can through it 
            retrieve every child in a single variable */

            console.log(rootVals.this.uids); 


            console.log("rootVals");
            console.log(rootVals);

          } );
}

}

如何将每个孩子存入一个变量?

2 个答案:

答案 0 :(得分:0)

要获取密钥(uids),请尝试以下方法:

firebase.database().ref().on('value', (snap) => {
snap.forEach(child => {
let keys=snap.key;
  });
});

更多信息:

https://firebase.google.com/docs/reference/js/firebase.database.Reference#key

答案 1 :(得分:0)

let uids = [];
let rootVals = [];

firebase.database().ref().on('value', (snap) => {
    let result = snap.value();
    for(let k in result){
     uids.push(k);
     rootVals.push(result[k]);
    }
});

“snap.value()”同时包含键和值对象,因此像这样使用for循环,可以分别获取对象键和值。

当每次循环运行时,“k”给出对象键。这样你就可以获得每个对象的所有键。 “result [k]”也给出了值对象。

如果你需要获得键和值,你可以制作自己的json对象并推入数组

let keys_values = []
firebase.database().ref().on('value', (snap) => {
    let result = snap.value();
    for(let k in result){
      keys_values.push({
        key : k,
        values : result[k]
      })
    }
});