【问题标题】:How to organize user's data in FireStore如何在 FireStore 中组织用户数据
【发布时间】:2021-11-07 14:00:06
【问题描述】:

我想在 Firestore 上创建一个如下所示的数据库:

  • 集合 A(用户)

    • 文档 A(用户 1)
      • 数据 1
      • 数据2
      • ThisListOfData
        • 这东西1
          • ThisSubData1
          • ThisSubData2
        • 这东西2
        • ...
    • 文档 B(用户 2)

每个用户都有他的数据(用户名,...)。但是他的一个数据(ThisListOfData)是一个事物列表(一个活动列表,比如瑜伽、运动……)。对于每个活动(ThisThing1,...),都有 subData。我想这样做,因为用户可以订阅更多的活动,删除一些......

这是我第一次使用 Firestore,所以我不知道该怎么做。 “ThisListOfData”应该/可以是一个集合?还是像字符串列表这样的数据?如果有人可以帮助我解决这个问题,以及如何获取“ThisListOfData”中的所有“事物”来检查用户订阅的活动?

非常感谢

【问题讨论】:

    标签: database firebase google-cloud-firestore


    【解决方案1】:

    在使用 Firestore 或实时数据库时,更重要的是当您试图弄清楚“在哪里”以及如何“构建”数据时如何“获取”数据。

    在决定这一点时,请始终考虑“我将在哪里使用这些数据?”和“我将如何查询它?”。

    您向我们展示的结构还可以。我的建议是,如果有一些数据部分也可供其他用户访问,则将它们存储到单独的集合中作为Users,并付出很多努力使集合Users 尽可能安全。出于这个原因,为了降低安全规则的复杂性,我总是喜欢并建议将此类数据(其他人应该可以使用)存储到单独的集合中。

    此外,如果您想将某些内容保存为文档的数据字段,例如 maparray,或者您想将其另存为 subcollection,主要取决于您以后希望如何获取数据或是否需要对其进行查询。如果您打算对其运行查询并对此类数据进行排序,我建议您将其保存为collection

    arrays 中保存数据有一些缺点,例如仅适用于整个数组的更新。

    【讨论】:

    • 您好,感谢您的回答!我有点难以理解。就我而言,我有一个集合“用户”和一个集合“活动”。活动一是所有人都可以访问的,它是可用的活动。现在,对于每个用户,我希望他们看到他们订阅的活动(其他用户无法访问)、订阅日期......我该如何安排?
    • 如果现在和将来只有用户可以看到他自己的订阅,您可以将其保存在用户文档或子集合的字段下。您有计划过滤这些数据吗?您多久需要这些数据?你需要它在用户列表中吗?它通常应该有多少元素?
    • 嘿塔里克。关于你的最后一句话,这并不完全正确。你可以update single elements within an array。不必为了执行更新而获取整个数组。
    • 对不起,我的意思是单个元素没有原生的update。我知道这样的“黑客”来做到这一点,比如一次删除和添加或执行整个数组。需要进行大量解释的事实应该是在考虑到这些知识的情况下将数组用于某些数据的标志。我不会将它们用于更新很多次且包含很多元素的数据。
    猜你喜欢
    • 2018-03-16
    • 2012-10-13
    • 2019-02-27
    • 2021-12-30
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2019-01-19
    • 2021-04-05
    相关资源
    最近更新 更多