【问题标题】:Firestore Data Structure for a Shop商店的 Firestore 数据结构
【发布时间】:2021-10-23 07:12:09
【问题描述】:

我一直在建立一个销售二手材料的网站,我曾经有我的 Firestore 数据库,如下所示

Posts(collection)
   ┣ userID1(document)
   ┃   ┣ postID1(collection)
   ┃   ┃   ┗ timestamp: 2018/09/21/22:22(field)
   ┃   ┣ postID2
   ┃   ┗ postID3
   ┣ userID2
   ┣ userID3

AllPosts(collection)
   ┣ allPosts(document)
   ┃   ┣ postID1(collection)
   ┃   ┃   ┗ timestamp: 2018/09/21/22:22(field)
   ┃   ┣ postID2
   ┃   ┗ postID3

为了加载主页的所有帖子,我曾经访问 AllPosts 集合,然后获取 allPosts 文档以将所有帖子作为一个在 firestore 上阅读。如果用户想查看一个商店的资料,我访问 Posts 集合以获取所有用户的帖子。

然后我意识到文档有 1MB 的限制,因此我不能使用一个文档来更大范围地存储所有帖子。所以,我必须使用一个名为帖子的集合,每个帖子都呈现一个文档。鉴于每次用户打开应用程序时都需要加载所有帖子,因此不会导致读取次数过多并可能超过 firestore 读取限制。我是否遗漏了什么,或者这是否有效

【问题讨论】:

    标签: firebase data-structures google-cloud-firestore


    【解决方案1】:

    对于您经常只需要数据子集的情况,您正在做的事情是相当惯用的。

    您可以考虑将AllPosts 信息分片到多个文档中,但需要一个可预测的命名方案。例如,您可以将文档 ID 基于其中帖子的日期(可能还有时间),每天(或其他相关时间范围)创建一个索引文档。

    您还可以考虑将 AllPosts 信息存储在 Firebase 的实时数据库中,该数据库更适合存储此类较小的信息,并且不会产生文档读取的成本开销。虽然实时数据库在使用带宽方面成本更高,但这很可能会被您每个帖子的数据较少的事实所抵消。因此,您最终会在实时数据库中获得 AllPosts“索引”,并在 Firestore 中获得各个发布文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2019-11-01
      • 2019-02-25
      相关资源
      最近更新 更多