Firebase querying grandchildren / multilevel querying -
from have read, doesn't seem possible query multilevel value. data structure looks following:
{ "dinosaurs": { "bruhathkayosaurus": { "meta":{ "addedby":"john", "addeddate":"02021987" }, "appeared": -70000000, "height": 25 }, "lambeosaurus": { "meta":{ "addedby":"peter", "addeddate":"12041987" }, "appeared": -76000000, "height": 2.1 } } } without knowing key name of dinosaurs, there anyway query meta node retrieving items added john.
in js like:
var ref = new firebase('test.firebaseio.com/dinosaurs'); ref.orderbychild("meta/addedby") .equalto('peter') .on("child_added", function(snapshot) { console.log(snapshot); }); there hacky solutions none scaleable, should flatten data?
edit:
i need code review... acceptable solution?
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()); }) });
queries can 1 level deep. there number of solutions flattening data , linking/referencing option.
in example above create node links user names (parent) dinosaurs (children) added. john node can read , know dinosaurs added. able access other relevant data dino; date added, appeared,height etc.
users john bruhathkayosaurus styracosaurus lambeosaurus spinosaurus peter lambeosaurus seismosaurus you want use uid's instead of names idea.
also, it's not clear why there meta node in example listed flattened thusly:
"dinosaurs": { "bruhathkayosaurus": { "addedby":"john" "addeddate":"02021987" "appeared": -70000000 "height": 25 }, edit jan 2016: since answer, firebase has deep queries can query deeper 1 level.
Comments
Post a Comment