【发布时间】:2022-01-18 16:54:47
【问题描述】:
我正在开发一款带有游戏内匹配功能的游戏,用户可以在其中创建游戏并等待其他玩家加入。
在 Firebase 中,我创建了一个“游戏”集合,其中的文档结构如下所示:
匹配算法真的很简单:
- 用户查询他可以加入的开放游戏(isStarted == true && player2 == null)
- 如果返回一个文档,则用户加入游戏,通过用户数据更新 player2 属性并在参与者数组中添加用户 ID。
- 如果没有返回任何文件,则创建一个游戏并等待其他玩家加入
实际上,游戏正在制作中,我观察到一个问题:当应用程序流量高时,一些游戏已经有 2 个用户加入(因此游戏中有 3 个用户而不是 2 个用户)。
理想情况下,我想通过查询进行交易,以确保文档没有更改(并且没有被其他用户加入)。如果由于其他用户已加入游戏而更改了文档,则获取另一个文档。 不幸的是,Firebase 文档提到事务不适用于查询。
有没有人想在不阅读太多文档的情况下解决这个问题?谢谢!
【问题讨论】:
标签: firebase flutter google-cloud-firestore