如何在firestore上正确构建数据结构



我有智力竞赛游戏,我想在firebase firestore上添加1000个问题,我的游戏中有数千个用户,每个用户都有特殊的id。

知道用户之前是否回答了这个问题的最佳方法是什么?

我应该在每个回答的问题中添加用户id吗?还是有其他方法?

我想以逻辑的方式构建数据结构,以减少消耗我对firestore的读取限制。

我能很快想到的两种最常见的解决方案:

  1. 创建一个顶级集合answers,用于存储所有用户的所有答案。在该集合中,使用UID和问题ID的组合来命名每个文档,以便检查文档是否存在/answers/$uid+$questionID
  2. 创建一个顶级集合users,其中每个UID代表一个用户。在每个UID文档下创建子集合答案,使用问题ID命名文档。现在,您可以通过检查/users/$uid/answers/$questionId来检查每个用户是否回答了特定的问题

这两种方法都不一定比另一种更好,而且它们通常允许类似的用例。我通常会选择第二种结构,因为它会导致数据的更自然分布,但在实践中,这是一个很小的偏好。

最新更新