为Google Firestore项目建模数据

时间:2017-11-02 11:18:44

标签: document google-cloud-firestore

我们正在创建一个新应用,它包含以下类型的数据,我正在寻找一些帮助,以便在Firestore中组织数据的最佳方式。

我们有以下内容:

  • 用户

    • 用户ID
    • 用户名
    • ...
  • 产品

    • 的ProductID
    • 产品名称
    • 用户ID
    • 一堆其他产品领域

到此为止,它是直截了当的,因为我们可以为用户提供一个集合,为产品提供一个集合。

现在,接下来是:

  1. 每个产品都可以有评论(用户多次评论)
  2. 每个评论本身都可以有很多用户评论
  3. 每个产品都有自己的用户评论。
  4. 因此,典型的产品将如下所示:

    产品(由用户发布)   - 用户评论     - 评论用户的评论   - 用户对产品的评论

    我正在研究在Firestore中组织这些数据的最佳方法。

    我可以想到两种可能的方式:

    可能性1

    有4个收藏:

    • 用户
    • 产品
    • 评论
      • 评论(评论评论将是评论的子集)
    • 评论

    这些集合中的文档将由产品ID引用。

    可能性2

    有两个主要的集合,然后作为产品集合的子集合进行评论和评论:

    • 用户
    • 产品
      • 评论
        • 评论
      • 评论

    这两种可能性中的哪一种是在Firestore中组织内容的最佳方式?

1 个答案:

答案 0 :(得分:2)

firestore docs提供了两种方法的优缺点列表: https://firebase.google.com/docs/firestore/manage-data/structure-data

TL;具有根级别集合的DR在大多数情况下是可取的,除非数据真的是分层的,所以我选择1),因为它只是为您提供最大的灵活性。

例如,你仍然可以过滤所有评论,所以如果你想显示用户的所有评论,你可以轻松地做到这一点2)这样的任务更难完成。