构筑画廊(Firestore)的最佳方法

时间:2019-06-15 07:31:50

标签: firebase flutter dart google-cloud-firestore

我正在尝试找到在Cloud Firestore中存储图库的最佳方法。

每个文档都有自己的画廊。

Firestore结构:

Collection
  - Document
    - Title
    - Gallery

Flutter应用程序将如下所示:

屏幕1:列表= [查看文档按钮]

屏幕2(文档): [查看图库按钮]

屏幕3: [查看外部图像按钮] [查看内部图像按钮]

屏幕4:根据选择显示图像

到目前为止,这些是我的选择:

  1. 将图像URL存储在每个文档的地图中(通过这种方法,图像在加载文档后立即可用。我担心的是每个文档的大小,这会增加屏幕1的加载时间)
  2. 将图像URL存储在每个文档的子集合中(这将导致额外的查询以检索画廊图像吗?)
  3. 将图像URL存储在“文档库”集合中的另一个文档中,该文档库随后包含主文档的引用字段(对此,我担心的是,然后有两个对Firestore的查询,在查看图库时需要第二次加载时间)。

另外:删除Firestore存储URL的基本URL以减小文档大小是否是个好主意? (即删除https://firebasestorage.googleapis.com/v0/b/test.appspot.com/(仅在文档字段中使用URL的其余部分),并在调用时以编程方式将其插入)

哪种方法最有利?

1 个答案:

答案 0 :(得分:1)

我认为,解决方案之一是您可以继续使用的解决方案,但是只有在您100%确信文档的大小不超过限制的情况下才可以解决。因此,在文档中可以放入多少数据方面存在一些限制。根据有关usage and limits的官方文档:

  

文档的最大大小:1 MiB(1,048,576字节)

如您所见,单个文档中的数据总数限制为1 MiB。当我们谈论存储文本时,您可以存储很多,但是当包含url的地图越来越大时,请注意此限制。

如果您认为单个文档超出了限制,则解决方案二就是可以解决您问题的方法。

  

另外:删除Firestore存储URL的基本URL以减小文档大小是个好主意吗?

是的。如上所述,您将减小文档的大小。因为该网址:

https://firebasestorage.googleapis.com/v0/b/test.appspot.com/

始终是一个常量,您可以在代码中使用它来重新创建整个url客户端。