如何循环访问来自Firebase的子记录
问题描述:
我的主要目标是循环遍历请求表中的所有记录,以检查用户是否需要reqdetails。我试过我的方式,但我没有转向不正确,当我登录控制台时没有显示任何内容。如何循环访问来自Firebase的子记录
我的声明和构造函数:
request: FirebaseListObservable<any>;
userkey: any;
reqdetails: FirebaseListObservable<any>;
constructor(public navCtrl: NavController, public navParams: NavParams, angFire: AngularFireDatabase) {
this.request = angFire.list('/request');
this.reqdetails = angFire.list('/request/reqdetails');
}
我的声明和火力控制台,显示了具有reqdetails的用户密钥的请求表。
我的代码:
openMapPage()
{
let process = this.request.subscribe(records => {
// your logic
records.forEach(record => {
var ref = firebase.database().ref("request");
ref.once("value")
.then(function(snapshot) {
var a = snapshot.exists(); // true
var b = snapshot.child(this.reqdetails).exists(); // true
var c = snapshot.child(this.userreq).exists(); // true
if(c.child(b).exists())
{
console.log(record.$key);
}
});
});
});
}
答
你要通过你的用户ID来接收用户数据。要将用户密钥插入到查询字符串中,您可以使用Template Strings。见下面的例子:
request: FirebaseListObservable<any>;
userkey: any;
userreq: FirebaseListObservable<any>;
constructor(public navCtrl: NavController, public navParams: NavParams, angFire: AngularFireDatabase) {
this.request = angFire.list('/request');
this.userreq = angFire.list(`/request/${this.userkey}`);
}
要检查用户是否有reqdetails你可以检查以下内容:
openMapPage() {
this.userreq.once('value', function(snapshot) {
if (snapshot.hasChild('reqdetails')) {
console.log('exists');
}
});
}
嗨,我明白,你必须将用户钥进入变量reqdetails。但仍然没有在控制台上打印。 – Suresh
看我上面的编辑。 –
我不明白你的逻辑。你可以用我的下面的代码来做什么?这会让我更好理解 – Suresh