Angularfire:如何查询数组中特定键的值?

时间:2015-03-12 15:59:27

标签: firebase angularfire

我有以下json对象:

{
  "posts" : {
    "-Jk3ipZ2EFgvkABHf9IX" : {
      "category" : "JavaScript",
      "date" : 1426008529445,
      "heading" : "Lorem",
      "text" : "dsvgfjds daefsrgfs defsds dsfsdds",
      "user" : "Mitko"
    },
    "-Jk3jFbOOE9V8Yd37tWj" : {
      "category" : "C#",
      "date" : 1426008640253,
      "heading" : "Lorem",
      "text" : "Some Text!",
      "user" : "Peter"
    }
  }
}

我在我的应用中使用Angularfire。有没有办法让我查询这个json并只提取类别名称,或者我应该为类别和查询创建一个额外的对象。我问,因为查询整个数组只有一个值感觉多余。

提前致谢

1 个答案:

答案 0 :(得分:4)

Firebase的JavaScript SDK(在其上构建AngularFire)将始终加载完整的节点。因此,无法仅从帖子中加载该类别。

通常的做法是创建仅包含类别的第二个顶级节点;或者类别和(对于每一个)该类别中每个帖子的推送ID。

{
  "posts" : {
    "-Jk3ipZ2EFgvkABHf9IX" : {
      "category" : "JavaScript",
      "date" : 1426008529445,
      "heading" : "Lorem",
      "text" : "dsvgfjds daefsrgfs defsds dsfsdds",
      "user" : "Mitko"
    },
    "-Jk3jFbOOE9V8Yd37tWj" : {
      "category" : "C#",
      "date" : 1426008640253,
      "heading" : "Lorem",
      "text" : "Some Text!",
      "user" : "Peter"
    }
  },
  "categories" : {
    "JavaScript" : {
      "-Jk3ipZ2EFgvkABHf9IX"
    },
    "C#" : {
      "-Jk3jFbOOE9V8Yd37tWj"
    }
}

它有点多余,但允许您准确获取在UI中显示特定屏幕所需的数据。像这样对数据进行非规范化是转换到NoSQL数据库的常见部分。