无法循环访问firebase中的子记录
问题描述:
嗨,我想弄清楚如何通过只有reqdetails的用户密钥来遍历请求表。我试着按照文档,但它不工作。 我只需要过滤掉只有reqdetails的所有用户密钥。例如OAJ2WNWQPUfwJCpAJ11FWIA8kPn2的用户密钥有一个需求。无法循环访问firebase中的子记录
顺便说一下我下面这个链接: https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot
这里是我的火力控制台:
这里是我的声明,并构造
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);
}
答
您需要在所有请求中指定目标请求或循环的密钥。
如果您知道密钥:
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);
});
}
非常感谢你 – Suresh