我正在编写一个与其他用户没有太多交互的应用程序。仅设置和检索您自己的数据。
在Firebase Firestore中,我如何对其进行建模,使所有内容都符合用户UID?
看起来像这样的东西?
users/{uid}/user/
users/{uid}/settings/
users/{uid}/weather/
如果我想实现这样的目标,那么我需要创建另一个UID:
users/{uid}/user/{uid}/{userInfo}
这让我觉得有点不对劲。
这是错的吗?如果我把每个子集合都移到它自己的集合中会更好吗?
这更快/更高效吗?
如有任何帮助,我们将不胜感激!
对我来说最常见的方法:
- 将配置文件信息、设置和天气存储在用户文档(
{uid}
(本身中。这对于配置文件信息来说是最常见的,但对于其他类型来说也是值得考虑的:它们真的需要在自己的文档中吗 - 为每个用户的单个子集合指定一个默认名称,然后将每个信息类型作为一个具有已知名称的文档。所以
/users/$uid/documents/profile
、/users/$uid/documents/settings
和/users/$uid/documents/weather
。因此,现在每种信息类型都在一个单独的文档中,这意味着您可以单独安全地访问它们 - 如果某个类型的信息重复,我会把它放在已知/命名的子集合中的文档中。所以如果有很多天气,你会得到
/users/$uid/weather/$weatherdocs
。所以有了这个,你们现在可以拥有一组无穷无尽的特定类型的信息
这两者都没有明显的好/坏,因为这完全取决于你的应用程序的用例。
这些方法之间会存在性能差异,因为它们需要不同数量的网络请求。如果这是你的应用程序所关心的问题,我建议测试上面的所有方法,以根据你的需求衡量它们的相对性能。