【问题标题】:how to summarize values in firebase database #AskFirebase如何汇总 Firebase 数据库中的值 #AskFirebase
【发布时间】:2017-02-04 19:42:33
【问题描述】:

我必须汇总 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 中的一些指导会很棒。

【问题讨论】:

    标签: javascript android firebase firebase-realtime-database


    【解决方案1】:

    您可以通过“weightTable”查询 Firebase,其中“carKey”等于“carOne”并对应用中的值求和。

    有关 AngularFire 查询,请参阅:docs

    对于 Firebase SDK(网络),请参阅排序和过滤部分:docs

    如果您仍然需要其他表格(“summTables”、“totalCarWeight”),您需要在每次写入“weightTable”时更新它们 - 这样您就可以在您的应用程序中执行此操作,或者(也许更好的方式)使用 Google Cloud Functions对于火力基地。因此,每次您写入“weightTable”时,它都会触发更新其他表的函数。

    有关 Firebase 的 Google Cloud Functions,请参阅:Jen Person video 和她在 Firebase YT channel 上的其他视频。

    【讨论】:

    • 目前我就像你描述的那样做这个总结。但我每次添加时都必须这样做。所以我跳了一个更好的方法。这里的问题是,如果我的 APP 连接,它会重新计算摘要,这也会触发对数据库和所有连接的客户端的更新。现在我正在考虑使用云功能进行总结。但是这样我就失去了离线功能......会看看它是怎么回事
    猜你喜欢
    • 2017-12-21
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多