2017-07-25 104 views
0

我的主要目標是循環遍歷請求表中的所有記錄,以檢查用戶是否需要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); 
    } 

}); 

}); 



    }); 



    } 

回答

0

你要通過你的用戶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