【发布时间】:2019-06-14 00:56:18
【问题描述】:
Firestore 数据库由一组用户组成。每个用户文档都有一些公共数据和一组他遵循的用户 ID,称为关注。在 Flutter 应用程序中,我想在以下数组上创建一个 StreamBuilder。因此,当用户将某人添加到他的以下数组时 - 它将被添加到流中,并且当以下列表中的用户更改他的数据时 - 流也会更新。
我想也许可以使用引用列表 ('users/usersid3') 而不是 ID 列表 ('userid3'),但我不知道如何实现它。
这就是数据库的结构。
users
- user1id
- some public data
- following: [user2id, user3id]
- user2id
- some public data
- following: []
- user3id
- some public data
- following: [user2id]
【问题讨论】:
-
这个答案有帮助吗? stackoverflow.com/a/50553853/10747134
-
@OneLunchMan 感谢您的参考,但我看不出这有什么帮助。该答案解释了如何以基本形式使用 StreamBuilder 。正如我在问题中解释的那样,我需要将它用于从集合中选择的文档。
-
哦,我看到了更多问题。因此 Firebase 不喜欢在数组中使用“更改”,因此使用您想要的信息将其制作为跟随 ID 的映射会更容易。从那里,为一个用户使用流构建器(而不是集合,它是一个文档引用,但基本上是相同的代码),并将返回的文档传递给您的显示组件,该组件可以处理来自地图键的列表项。
-
@OneLunchMan 我喜欢你的想法。我忘了说有很多用户在关注其他人,这意味着我们很好地在用户关注地图中保存了公共数据的多个副本,并且每次有人更改他的公共数据时都会进行大量更新(=存储和写入成本高昂)。
标签: firebase flutter google-cloud-firestore