如何使用angularFire在firebase中查询?

时间:2014-06-26 18:52:34

标签: angularjs firebase firebase-realtime-database angularfire nosql

我在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。

1 个答案:

答案 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;
}