如何循环访问来自Firebase的子记录

如何循环访问来自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的用户密钥的请求表。

enter image description here

我的代码:

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'); 
    } 
    }); 
} 
+0

嗨,我明白,你必须将用户钥进入变量reqdetails。但仍然没有在控制台上打印。 – Suresh

+0

看我上面的编辑。 –

+0

我不明白你的逻辑。你可以用我的下面的代码来做什么?这会让我更好理解 – Suresh