文件树数据的最佳Firestore数据模型

问题描述 投票:0回答:1

我目前正在构建一个应用,该应用需要以与文件树类似的结构来存储数据。看起来像这样:

{
  "type": "folder",
  "name": "folder A",
  "private": false,
  "updatedAt": 1231243,
  "items": [
     {
      "type": "folder",
      "name": "subfolder A",
      "private": false,
      "updatedAt": 1231243,
      "items": [
         {
           "type": "file",
           "name": "file1"
         }
       ] 
     },
     {
       "type": "file",
       "name": "file2"
     }
   ]
}

到目前为止我所知道的,有3种方法可以实现。

  1. 仅将所有数据转储为1个文档
  2. 为每个项目数组创建一个子集合
  3. 创建平面文件夹结构并保存父文件夹ID以进行查找

我正在寻找一种以尽可能少的查询来获取所有这些数据的方法,理想的用例是仅具有根文件夹ID并获取所有子文件夹和项目。但我不确定是否可行。

而且,我计划将来订阅数据,因此文件树将实时更新。

[请给我一个关于数据模型应该是什么样的建议

更新1要进一步说明我需要的查询:

  1. 在此示例中,我只需要获取最顶层的文件夹(文件夹A)及其下的项目,就可以了
  2. 我不需要直接获取嵌套项目示例:在不访问文件夹A的情况下获取子文件夹A /文件2
database firebase google-cloud-firestore nosql data-modeling
1个回答
0
投票

[如果您需要通过一个唯一的ID获得整个结构,只需将其全部放入一个文档中,并使用已知ID对其进行get()

如果您需要访问列表中的项目,这会变得更加复杂(如果不阅读整个文档,这是不可能的,因此,在这种情况下,这实际上是一个坏主意。

如果您打算经常更新本文档的元素,您还需要重新考虑这一点,因为limit每秒写1次(持续)。您可能希望将其拆分。

© www.soinside.com 2019 - 2024. All rights reserved.