2014-06-26 4 views
1

J'ai une structure simple Firebase:Comment puis-je effectuer une requête dans firebase en utilisant angularFire?

{ 
    "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" : "[email protected]" 
    } 
    } 
} 

J'ai besoin d'énumérer tous les "locais" qui ont "subcateria1: true" par exemple. Je ne sais pas comment faire cela car il est nécessaire "localId" mais dans la requête je ne connais pas le localId. Je veux juste tous les "locais" qui appartiennent à subcategoria1. J'utilise AngularFire.

+0

vous pouvez créer des références à des parties de vos données en utilisant la méthode de $ enfant de angularfire et forer vers le bas à partir de là https://www.firebase.com/docs/angular/reference.html#child-key –

+0

Merci pour votre aide, mais ce dont j'ai besoin, c'est d'une méthode pour chercher dans mes "locais" et filtrer uniquement les locals qui ont "subcateria1: true" , je ne fais que ça avec $ child() si je sais quel "id" j'ai besoin d'itérer, mais ce n'est pas le cas. – renatomattos2912

+0

Consultez le blog Firebase, qui [a un excellent article] (https://www.firebase.com/blog/2013-10-01-queries-part-one.html) sur la conversion de requêtes SQL à un état d'esprit Firebase . – Kato

Répondre

0

je trouve la solution, mais je ne sais pas si elle est la bonne façon:

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; 
} 
Questions connexes