我在Firebase中有一个简单的结构:
{
"categorias" : {
"categoria2" : {
"subcategorias" : {
"subcategoria4" : {
"nome" : "Subcategoria 4"
},
"subcategoria6" : {
"nome" : "Subcategoria 6"
},
"subcategoria5" : {
"nome" : "Subcategoria 5"
}
},
"icone" : "fa-cloud",
"nome" : "Categoria 2"
},
"categoria1" : {
"subcategorias" : {
"subcategoria1" : {
"nome" : "Subcategoria 1"
},
"subcategoria3" : {
"nome" : "Subcategoria 3"
},
"subcategoria2" : {
"nome" : "Subcategoria 2"
}
},
"icone" : "fa-bolt",
"nome" : "Categoria 1"
}
},
"locais" : {
"local1" : {
"subcategorias" : {
"subcategoria4" : true,
"subcategoria1" : true
},
"nome" : "Local 1",
"email" : "local1@loc1.com"
}
}
}
我需要列出所有" locais"有" subateria1:true"例如。我不知道如何做到这一点,因为它需要" localId"但在查询中我不知道localId。我只想要所有的" locais"属于subcategoria1。
我正在使用AngularFire。
答案 0 :(得分:0)
我找到了解决方案,但我不知道这是否正确:
findBySubcategoria: function(subcategoriaId) {
var result = {};
locais.$on("value", function(snap){
var keys = snap.snapshot.value;
angular.forEach(keys, function(key, i){
if(key.subcategorias[subcategoriaId]){
result[i] = locais.$child(i);
}
});
});
return result;
}