如何从flutter firestore获取计数和不同的字符串值?

问题描述 投票:0回答:1

我在 Firestore 中有一个文档,其中有一个类别值/字段。我通过用户界面上的单选按钮向它发送值。因此,firestore 该字段只有 1 个字符串值,总共有 4 种可能性。

UI-颜色、高度、宽度、风格 Firestore - 字段 = 类别,值 = 颜色或高度或宽度或风味

现在我想使用这些值创建图表,其中所有四个选项都显示为单独的条形图,并且它们的出现次数为频率。

我可以使用文档快照从 firestore 获取数据。但不知道如何从这里开始。

我如何创建单独的变量来捕获所有这些选项及其计数。

请帮忙,谢谢。我正在使用颤振

flutter firebase google-cloud-platform google-cloud-firestore charts
1个回答
3
投票

我如何在所有这些选项所在的位置创建单独的变量 被俘虏然后清点他们的数量?

可能的解决方案取决于您想要显示图表的位置以及您想要如何计算/准备和存储这些图表的数据。

如果您想在 Flutter 应用程序中显示图表

如果您想在 Flutter 应用程序中显示图表,将数据存储在 Firestore 中是一个好方法,因为您可以使用 Flutter 插件轻松查询数据,并且可以将 Firestore 安全规则应用于图表数据,就像保护图表数据一样其他应用程序数据。

但是,您应该避免每次想要显示图表时查询“所有”Firestore 文档,因为这可能会迅速增加您的账单金额...建议的方法是维护保存聚合值的“计数器”。正如文档中所解释的:“每个计数器都是一个包含 shards 子集合的文档,计数器的值是分片值的总和”。 由于您将数据保存在一个字段中,因此一个好的方法是使用云函数来递增一组

计数器

更准确地说,每次创建/修改文档时,云函数都会读取“一个字段”值,并根据它是 color

height

width
flavour
更新一个 (或更多)柜台。如果图表中的唯一维度是类别,则仅需要 4 个计数器(
color
height
width
flavor
)。如果您想要其他维度(例如
time
或字段的其他类别或特定值,例如不同的
colors
或不同的
heights
),您将需要更多计数器。
如果您想在其他应用程序/工具中显示图表
如果您需要在其他应用程序或工具中显示这些图表,例如后台应用程序或 BI/分析工具(如 Google Data Studio 或 QlikView),有一个有趣的替代方案:您可以使用名为“导出”的 

Firebase 扩展

Collections to BigQuery”,允许将 Cloud Firestore 集合中的文档导出到

BigQuery

,这是 Google Cloud 提供的无服务器、高度可扩展的企业数据仓库。 当数据位于 BigQuery 中时,您可以使用 SQL 语言构建 SQL 视图并准备数据以进行可视化。特别是聚合查询要容易得多,因为您使用 SQL 并且不需要维护 Firestore 计数器(如果您有很多维度,这可能会变得很麻烦)。 我最近写了一篇关于如何配置此扩展的

文章

,其中包括聚合查询的简单示例。

混合两种方法 如果你想在 Flutter 应用程序中显示图表,并且你的图表非常复杂(很多维度,即许多不同的颜色、高度……按年、月、周等聚合),你可以采取两种方法的优点:

通过扩展将数据导出到 BigQuery

在 BigQuery 中构建一些 SQL 视图以准备图表数据
  1. 使用 Cloud Function 将图表数据从 BigQuery 导出到 Firestore 文档
  2. 从 Flutter 应用查询这些 Firestore 文档
© www.soinside.com 2019 - 2024. All rights reserved.