2017-07-30 82 views
0

嗨,我想弄清楚如何通過只有reqdetails的用戶密鑰來遍歷請求表。我試着按照文檔,但它不工作。 我只需要過濾掉只有reqdetails的所有用戶密鑰。例如OAJ2WNWQPUfwJCpAJ11FWIA8kPn2的用戶密鑰有一個需求。無法循環訪問firebase中的子記錄

順便說一下我下面這個鏈接: https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot

這裏是我的火力控制檯:

enter image description here

這裏是我的聲明,並構造

request: FirebaseListObservable<any>; 
    userkey: FirebaseListObservable<any>; 
    reqdetails: FirebaseListObservable<any>; 
    userreq: FirebaseListObservable<any>; 

    constructor(public navCtrl: NavController, public navParams: NavParams, angFire: AngularFireDatabase) { 
    this.request = angFire.list('/request'); 
    this.userreq = angFire.list(`${this.userkey}`); 
    this.reqdetails = angFire.list('reqdetails'); 
    } 

這裏是我的OpenMapPage方法

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 c = snapshot.hasChild("reqdetails"); // true 

    var d = snapshot.child('reqdetails').exists(); 

    if (snapshot.hasChild('reqdetails')) 
    { 
     console.log(record.$key); 
    } 
}); 
}); 
    }); 
     this.navCtrl.push(MapPage); 
} 

回答

1

您需要在所有請求中指定目標請求或循環的密鑰。

如果您知道密鑰:

ref.child(REQUEST_KEY).once("value", function(snapshot) { 
    var requestKey = snapshot.key; 
    var requestValue = snapshot.val(); 

    var reqdetails = requestValue.reqdetails; 

    console.log(reqdetails); 
} 

如果你希望所有的請求:

ref.once("value", function(snapshot) { 
    var requestsKey = snapshot.key; 
    var requestsValue = snapshot.val(); 

    snapshot.forEach(function(childSnapshot) { 
     var requestKey = childSnapshot.key; 
     var requestValue = childSnapshot.val(); 

     var reqdetails = requestValue.reqdetails; 

     console.log(reqdetails); 
    }); 
} 
+0

非常感謝你 – Suresh