我有这个Firebase数据库:
我需要得到alii-b9d94的所有uids(孩子)。但问题是:当我把它作为一个对象时,我无法访问该对象以从中获取值。
这是我能够得到它但我无法访问它:
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);
} );
}
}
如何将每个孩子存入一个变量?
答案 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]
})
}
});