文件夹系统的Firebase数据结构/索引

文件夹系统的Firebase数据结构/索引,firebase,firebase-realtime-database,nosql,Firebase,Firebase Realtime Database,Nosql,我有以下数据结构: "users": { $userid: { "forms": { "ID_OF_FORM 1": { "name": "Name goes here" }, "ID_OF_FORM 2": { "name": "Name goes here" } } } } 我希望能够将我的“表单”放在文件夹系统中,以便更好地为用户组织所有表单。现在我使用/users/auth.id/forms

我有以下数据结构:

"users": {
    $userid: {
        "forms": {
            "ID_OF_FORM 1": { "name": "Name goes here" },
            "ID_OF_FORM 2": { "name": "Name goes here" }
        }
    }
}
我希望能够将我的“表单”放在文件夹系统中,以便更好地为用户组织所有表单。现在我使用
/users/auth.id/forms/id
调用它们。我曾计划将对象放入
表单
对象中,但如果这样做的话,我想我再也不能用表单id调用它们了

我不知道该如何存储这些文件夹,以便轻松显示它们

  • 我需要显示根目录中的所有文件夹或 用户当前所在的文件夹
  • 我还需要能够使用表单的id调用表单
你觉得这样行吗?有没有人对继续这样做有更好的建议

"users": {
    $userid: {
        "forms": {
            "ID_OF_FORM 1": { "name": "Name goes here", "folder_id": "ID_OF_FOLDER" },
            "ID_OF_FORM 2": { "name": "Name goes here", "folder_id": "ID_OF_FOLDER" }
        },
        "folders": {
            "ID_OF_FOLDER 1": { "name": "name of folder" },
            "ID_OF_FOLDER 2": { "name": "name of folder" },
            "ID_OF_FOLDER 3": { 
                "name": "name of folder",
                "ID_OF_FOLDER 4": { "name": "would this even work" }
            }
        }
    }
}

在我看来,这很好,尽管除非知道所有用例(StackOverflow并不是真正合适的论坛),否则很难确定

我会将
文件夹
稍微更改为:

    "folders": {
        "ID_OF_FOLDER 1": { "name": "name of folder" },
        "ID_OF_FOLDER 2": { "name": "name of folder" },
        "ID_OF_FOLDER 3": { "name": "name of folder" },
        "ID_OF_FOLDER 4": { "name": "would this even work", "folder_id": "ID_OF_FOLDER 3" }
    }
否则,您将面临超过Firebase对树的深度施加的32级限制的风险。很好的一点是,您可以通过这里的ID直接访问任何文件夹

您可以考虑为所有的项目类型、表单和文件夹(以及在构建应用程序时可能出现的任何其他)使用单个顶级节点:


但我认为目前这对于您的用例来说不是太有利。考虑到您所说的,文件夹和表单之间的分离看起来相当不错。

谢谢Frank!现在我有很好的理由将文件夹和表单分开(我没有列出表单的更多属性),但我总是乐于接受建议以及其他方式的利弊。一如既往,我感谢你的帮助。
    "items": {
        "ID_OF_FORM 1": { "type": "form", "name": "Name goes here", "folder_id": "ID_OF_FOLDER" },
        "ID_OF_FORM 2": { "type": "form", "name": "Name goes here", "folder_id": "ID_OF_FOLDER" }
        "ID_OF_FOLDER 1": { "type": "folder", "name": "name of folder" },
        "ID_OF_FOLDER 2": { "type": "folder", "name": "name of folder" },
        "ID_OF_FOLDER 3": { "type": "folder", "name": "name of folder" },
        "ID_OF_FOLDER 4": { "type": "folder", "name": "would this even work", "folder_id": "ID_OF_FOLDER 3" }
    }