0

我有以下数据结构:

"users": {
    $userid: {
        "forms": {
            "ID_OF_FORM 1": { "name": "Name goes here" },
            "ID_OF_FORM 2": { "name": "Name goes here" }
        }
    }
}

我希望能够将我的“表单”放在文件夹系统中,以便更好地为用户组织所有表单。现在我用/users/auth.id/forms/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" }
            }
        }
    }
}
4

1 回答 1

2

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

我会将folders一点更改为:

    "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 直接访问任何文件夹。

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

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

但我认为目前这对您的用例不太有利。鉴于您所说,文件夹和表单之间的拆分似乎相当不错。

于 2014-11-17T19:52:20.287 回答