在Firebase中建模数据的最佳方式

Col*_*rts 1 database json firebase

我是Firebase的新手,并且不熟悉数据建模的最佳方法.我是一名网页设计师,他喜欢Web开发并选择Firebase作为服务,因为它易于使用.

现在我正在将我的数据建模为:

[Firebase Root]
    |
    +--userId  (Firebase unique UID)
        |
        +--Projects
               |
               + ProjectId (Firebase unique key)
                      |
                      +--Images
                           |
                           +--ImageId  (Firebase unique key)
                                 |
                                 +--Comments
                                      |
                                      +--CommentId  (Firebase unique key)
Run Code Online (Sandbox Code Playgroud)

我想知道这是不是很好的做法?它的可扩展性/性能如何?

它看起来很臃肿,但我对如何解决这个问题几乎没有什么经验,我想设计我的应用程序时考虑到最佳实践.

Jay*_*Jay 5

方式大问题.这实际上取决于您想要对数据做什么.

虽然这种结构在技术上没有任何错误,但它的嵌套非常深,因此,从中获取数据可能会受到限制.

你真的想尽可能地平整你的数据 - 越平坦越好.

一种想法是让您的数据可重复使用.不确定这是否是您设置的一部分,但是这样的话:

users
  uid_0
    name: "Jeff"
  uid_1
    name: "Cole"

projects
  project_id_0
    user: uid_0
    images
      image_id_0: true
      image_id_1: true
    comments:
      comment_id_0: true
  project_id_1
    user: uid_1
      image_id_1: true
      comment_id_1: true
images
  image_id_0
    image: "link to some image"
  image_id_1
    image: "link to another image"

comments
  comment_id_0
     verbiage: "nice project_id_0!!!"
     made_by: user_id_0
     project: project_id_0
  comment_id_1
     verbiage: "project_id_1 is the best project evah"
     made_by: user_id_1
     project: project_id_1
Run Code Online (Sandbox Code Playgroud)

使用这种结构,您的项目通过引用将用户,图像和注释绑定到它,它非常浅 - 易于获取您的数据.

您甚至可以将其扩展一下,并将多个用户分配给单个项目.

如果您注意到,我将评论与项目和项目交叉链接到评论.这样,您可以轻松地查询注释节点有关特定项目(或由特定用户创建)以及何时加载项目节点(在代码中),您可以直接访问有关该项目的注释.

这使您可以跨多个项目使用相同的图像.