【发布时间】:2020-05-11 17:01:21
【问题描述】:
我目前正在构建一个应用程序,该应用程序需要使用与文件树类似的结构来存储数据。它看起来像这样:
{
"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 个文档中
- 为每个项目数组创建一个子集合
- 创建平面文件夹结构并保存父文件夹 ID 以供查找
我正在寻找一种以尽可能少的查询获取所有这些数据的方法,理想的用例是只有根文件夹 ID 并获取所有子文件夹和项目。但我不确定这是否可能。
另外,我打算以后订阅数据,所以文件树会实时更新。
请给我一个关于数据模型应该是什么样子的建议
更新 1 为了更清楚地说明我需要的查询:
- 我只需要获取本示例中最顶层的文件夹(文件夹 A)及其下的项目
- 我不需要直接获取嵌套项 示例:在不访问文件夹 A 的情况下获取子文件夹 A / 文件 2
【问题讨论】:
-
您应该首先准确定义您的查询将是什么。在不知道如何查询数据的情况下,您可能会对如何构建数据做出错误的决定。像 Firestore 这样的 NoSQL 数据库不一定像 SQL 那样具有最灵活的查询功能,因此提前了解您想要完成的任务很重要。
-
嗨,@DougStevenson 感谢您的提示!我已经根据我的查询需求更新了帖子
标签: database firebase google-cloud-firestore nosql data-modeling