【问题标题】:Best way to save multiple collections under one user UID在一个用户 UID 下保存多个集合的最佳方法
【发布时间】:2021-06-10 12:12:37
【问题描述】:

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

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

看起来像这样的东西?

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

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

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

这让我感觉有点不对劲。

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

  2. 这样更快/更高效吗?

感谢任何帮助!

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    对我来说最常用的方法:

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

    这两者都不是更好/更差,因为这完全取决于您的应用的用例。

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

    【讨论】:

    • 感谢弗兰克的回答!我要选择选项 0 (1)。我会将一个文档中的每个类别保存为“对象的对象”。 { weather: {}, settings: {} } 因为不会有单独查询它们的用例。
    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 2010-10-19
    • 2021-02-11
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    相关资源
    最近更新 更多