我必须总结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中的一些指导会很棒。
答案 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上的其他视频。