【问题标题】:How to model this case in a firestore database?如何在 Firestore 数据库中建模这种情况?
【发布时间】:2021-12-09 16:16:38
【问题描述】:

云 Firestore 的新手构建第一个 Flutter 应用程序。我有以下用例:

我正在构建一个包含模式、套牌和挑战的游戏。每种模式都可以有单独的牌组,每个挑战都分配有一个牌组。例如:

Mode A -> Deck 1,2,3 
Mode B -> Deck 4,5,6
Mode C -> Deck 7,8,9

Challenge 1 -> Deck 1
Challenge 2 -> Deck 2
Challenge x -> Deck 8

我应该在此处使用文档引用,还是将诸如 decknumber 之类的字段作为 int 添加到 Firestore 集合中更好?

【问题讨论】:

  • 我们通常根据要执行的查询来构建 Firestore 数据库。这些查询是什么?
  • @AlexMamo 可能的查询是:Select * from decks where modeNumber = ..., and Select * from challenge where deckNumber = ....
  • 你是要随机分配套牌给模式,也要把套牌分配给挑战,还是你有一些固定的算法来做到这一点,例如甲板 2 总是分配给挑战 2,甲板 3 分配给挑战3等?

标签: firebase flutter dart google-cloud-platform google-cloud-firestore


【解决方案1】:

如果您需要执行以下查询:

从 modeNumber = ... 的牌组中选择 *,从 deckNumber = ... 的挑战中选择 *。

然后您应该简单地定义两个单独的集合,一个称为“甲板”,另一个称为“挑战”。在第一个集合中,您应该添加应该包含名为“modeNumber”,类型为 number 的字段的文档,在第二个集合中,您应该添加应该包含一个名为“deckNumber”,类型为 number 的字段的文档。在代码中应该是这样的:

await Firestore.instance.collection('decks').where("modeNumber", isEqualTo: value)

await Firestore.instance.collection('challenges').where("deckNumber", isEqualTo: value)

【讨论】:

  • 完美,我确实采用了这个解决方案。很高兴知道这是应该如何做的。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多