如何汇总firebase数据库中的值#AskFirebase

时间:2017-02-04 19:42:34

标签: javascript android firebase firebase-realtime-database

我必须总结firebase数据库中的值。

注意:这是一个简化的非实际项目,以便于解释。如果JSON数据有错误,请道歉。这是出于演示目的,我将根据我的实际需要进行调整。 完整的项目描述与真实数据在这里:best practize summarize FirebaseDatabase values,但似乎太具体了。

假设我每次都在收集多辆汽车的重量数据。

因此,一些示例数据可能如下所示:

weightTable{
  weightKey1{
    "carKey" : "carOne",
    "carWeight" : 1.4
  },
  weightKey2{
    "carKey" : "carOne",
    "carWeight" : 1.9
  },
  weightKey3{
    "carKey" : "carTwo",
    "carWeight" : 1.1
  },
  weightKey4{
    "carKey" : "carThree",
    "carWeight" : 1.7
  }
}

我现在想要一个单独的“表格”,其中我只有所有重量数据的摘要,按“carKey”分组。

所以我得到

summTable{
  "carOne"{
    "weightSum" : 3.3,
    "cnt" : 2
  },
  "carTwo"{
    "weightSum" : 1.1,
    "cnt" : 1
  },
  "carThree"{
    "weightSum" : 1.7,
    "cnt" : 1
  }
}

“weightSum”是“carWeight”的摘要。

“cnt”是汇总的数据计数。

最后,我想要一张表,列出所有车辆的摘要

totalCarWeight{
        "weightSum" : 6,1,
        "cnt" : 4
}

sumTable用于填充Android应用和网页中的视图以显示摘要。如果他们点击摘要中的汽车,他们会获得此车的详细视图,并收集每个重量。 因此,摘要数据应该是尽力而为的基础。

我看到的可能问题:

  • 设备没有网络连接并将数据添加到“weightTable”;

  • 多个设备将数据添加到“weightTable”。

任何提示如何做到这一点?

在普通的SQL数据库中,我们可以要求数据库在查询中进行汇总或计数条目。

希望现在更容易理解和回答。

Android或javascript中的一些指导会很棒。

1 个答案:

答案 0 :(得分:0)

您可以通过" weightTable"查询Firebase。其中" carKey"等于" carOne"并在您的应用中汇总值。

对于AngularFire查询,请参阅:docs

对于Firebase SDK(网络),请参阅:docs

的排序和过滤部分

如果您仍然需要其他表格("汇总和#34;," totalCarWeight"),您每次写入" weightTable"时都需要更新它们。 - 这样您就可以在自己的应用中执行此操作,或者(可能更好的方式)使用适用于Firebase的Google Cloud Functions。所以,每当你写到" weightTable"它将触发更新其他表的函数。

对于适用于Firebase的Google Cloud Functions,请参阅:Jen Person video以及Firebase YT channel上的其他视频。