基于嵌套数组过滤Firebase对象

时间:2016-12-01 11:24:19

标签: angular firebase firebase-realtime-database observable

我的Angular2应用中有一组带有一组标签的Firebase列表。我正在寻找一种方法用“Tag1”返回所有图像。这是否可以使用sort_by函数?

let arrayOfElements = 
    [
        {
           "name": "a",
           "subElements": 
           [
             {0: "Tag1"},
             {1: "Tag2"}
           ]
        },
        {
           "name": "a",
           "subElements": 
           [
             {0: "Tag1"},
             {1: "Tag3"}
           ]
        }
    ];

1 个答案:

答案 0 :(得分:3)

现在你需要坐下来思考这个,为什么?原因是你在firebase中遇到了一个典型的问题....回答这个问题:

  • arrayOfElements 可以是无限的吗?
  • arrayOfElements 尺寸可以小于100(例如)?

为什么你需要回答这个问题?假设你有一个数组的10.000个项目(或无限项目)如果你使用orderByChild("0").equalTo("Tag1") firebase数据库需要读取所有项目来查找项目有“Tag1”,那么你的app /网络需要更多时间数据才能获得此查询的结果,然后我们需要开始讨论规范化firebase数据库,现在是时候创建索引,你可以看到我昨天解释的post

如果您在第二个问题中的答案是,那么您可以使用此命令获取值orderByChild("0").equalTo("Tag1"),因为消耗的数据和浪费的时间太少其他情况......您可以解决此问题在firebase数据库规则上添加indexOn()。分析您的数据库并确定最佳选择。

<强>更新

关于你的评论......如果你没有身份证或者不需要firebase unique id这个最好的表格,对我来说就是这个:

arrayOfElements{
    tag1:"true",
    tag2:"true"
}

只需将密钥作为值。

如果我帮助了你并且编程很好,请告诉我!