Okuduğum her şeyden, çok düzeyli bir değer sorgulamak mümkün görünmüyor. Benim veri yapısı aşağıdaki gibidir:Torun/çok düzeyli sorgulamayı sorgulama Firebase
{
"dinosaurs": {
"bruhathkayosaurus": {
"meta":{
"addedBy":"John",
"addedDate":"02021987"
},
"appeared": -70000000,
"height": 25
},
"lambeosaurus": {
"meta":{
"addedBy":"Peter",
"addedDate":"12041987"
},
"appeared": -76000000,
"height": 2.1
}
}
}
dinozorlar anahtar adını bilmeden, John tarafından eklenen tek öğeler alınırken meta düğümü sorgulamak için zaten yoktur.
var ref = new Firebase('test.firebaseio.com/dinosaurs');
ref.orderByChild("meta/addedBy")
.equalTo('Peter')
.on("child_added", function(snapshot) {
console.log(snapshot);
});
hacky çözüm vardır ama hiçbiri ben sadece bu veriyi dümdüz olmalı, ölçeklenebilir şunlardır: gibi JS Something
?Düzenleme:
Bir kod inceleme gerekir ... Bu kabul edilebilir bir çözüm olurdu?
var ref = new Firebase('test.firebaseio.com/dinosaurs');
ref.orderByChild("meta")
.on('child_added',function(snap1){
snap1.ref().orderByChild("addedBy")
.equalTo("Peter")
.on('child_added', function(snap2) {
console.log(snap2.val());
})
});
Dikkatli olun: bir "açık" olduğunda, her zaman ilgili "kapalı" ne zaman gerçekleşeceğini düşünmelisiniz. Üst düzey için "açık", "sayfa/uygulama kapalıyken" olabilir, ancak "child_added" öğesindeki "on" öğeniz, zaman içinde dinleyicilerin oluşturulmasına neden olur. Bunu çözmenin ortak yolu, döngüde 'bir kere 'kullanmaktır, ancak bu genellikle de en düşük performansa yol açar. –
Ayrıca bkz: http://stackoverflow.com/questions/30151012/is-there-a-way-in-angularfire-to-query-for-matching-and-condition –