在一个用户UID下保存多个集合的最佳方式



我正在编写一个与其他用户没有太多交互的应用程序。仅设置和检索您自己的数据。

在Firebase Firestore中,我如何对其进行建模,使所有内容都符合用户UID?

看起来像这样的东西?

users/{uid}/user/
users/{uid}/settings/
users/{uid}/weather/

如果我想实现这样的目标,那么我需要创建另一个UID:

users/{uid}/user/{uid}/{userInfo}

这让我觉得有点不对劲。

  1. 这是错的吗?如果我把每个子集合都移到它自己的集合中会更好吗?

  2. 这更快/更高效吗?

如有任何帮助,我们将不胜感激!

对我来说最常见的方法:

  1. 将配置文件信息、设置和天气存储在用户文档({uid}(本身中。这对于配置文件信息来说是最常见的,但对于其他类型来说也是值得考虑的:它们真的需要在自己的文档中吗
  2. 为每个用户的单个子集合指定一个默认名称,然后将每个信息类型作为一个具有已知名称的文档。所以/users/$uid/documents/profile/users/$uid/documents/settings/users/$uid/documents/weather。因此,现在每种信息类型都在一个单独的文档中,这意味着您可以单独安全地访问它们
  3. 如果某个类型的信息重复,我会把它放在已知/命名的子集合中的文档中。所以如果有很多天气,你会得到/users/$uid/weather/$weatherdocs。所以有了这个,你们现在可以拥有一组无穷无尽的特定类型的信息

这两者都没有明显的好/坏,因为这完全取决于你的应用程序的用例。

这些方法之间会存在性能差异,因为它们需要不同数量的网络请求。如果这是你的应用程序所关心的问题,我建议测试上面的所有方法,以根据你的需求衡量它们的相对性能。

最新更新