【问题标题】:Angularfire: how to query the values of a specific key in an array?Angularfire:如何查询数组中特定键的值?
【发布时间】:2015-03-12 15:59:26
【问题描述】:

我有以下 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 并只提取类别名称,或者我应该为类别创建一个额外的对象并以这种方式查询。我之所以这样问,是因为只为一个值查询整个数组是多余的。

提前致谢

【问题讨论】:

    标签: firebase angularfire


    【解决方案1】:

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

    解决此问题的常用方法是创建仅包含类别的第二个顶级节点;或者,该类别中每个帖子的类别和(对于每个)push-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 数据库的常见部分。

    【讨论】:

    • 我是 NoSQL 的新手,所以感谢您提供的信息。从现在开始我会这样做。
    猜你喜欢
    • 2018-01-06
    • 2019-07-20
    • 1970-01-01
    • 2021-02-11
    • 2018-06-15
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多