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

Best Firestore data model for file tree data

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

{
  "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

如果您只需要通过某个唯一 ID 获取整个结构,只需将其全部放在一个文档中,然后 get() 使用已知 ID 即可。每个文档有 1MB limit

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

如果您打算经常更新本文档的元素,您也需要重新考虑这一点,因为 limit 每秒写入 1 次(持续)。否则你会想把它分开。