使用Firebase设置基于项目的应用程序的最佳实践

使用Firebase设置基于项目的应用程序的最佳实践,firebase,firebase-realtime-database,ionic2,angularfire2,Firebase,Firebase Realtime Database,Ionic2,Angularfire2,我正在使用Ionic2和Firebase开发一个基于项目的应用程序。我的问题是,以基于项目的格式存储数据时,最佳做法是什么?我知道它应该尽可能平。也就是说,下面是我当前的设置 Firebase Data -Users (all auth'd users) -Projects (Rules allow only users authorized to access one particular project) -Elements (elements within

我正在使用Ionic2和Firebase开发一个基于项目的应用程序。我的问题是,以基于项目的格式存储数据时,最佳做法是什么?我知道它应该尽可能平。也就是说,下面是我当前的设置

Firebase Data
    -Users (all auth'd users)
    -Projects (Rules allow only users authorized to access one particular project) 
        -Elements (elements within the project that are edited)
        -Forms (form items specific to a project)
        -Images (just urls & metadata, the actual image is stored in GCS)
这是最佳实践吗?或者我应该将每个项目的“表单”和“元素”对象存储在一个节点中,使用查询和项目ID来检索它们吗

应用程序的流程如下所示:

  • 用户首先使用Firebase Auth登录(此数据存储在“用户”节点中)
  • 用户将收到他们的项目列表(该列表以及项目的id也存储在他们的用户节点中)
  • 当用户选择一个项目时,我当前正在查询整个项目的节点 我只是不确定返回整个节点是否最有效(因为它可能包含数百或数千个元素、图像和表单)


    我使用Angularfire2和一个
    FirebaseObjectObservable
    返回提供者中整个项目节点的值(见下文)

    这取决于您的问题以及如何进行查询。您可以通过不同的查询检索相同的数据,例如检索同一用户的所有元素、与一个表单相关的元素等。因此,为了提供帮助,您需要提供有关如何进行查询的更多信息。谢谢@TurkhanBadalov,我相应地编辑了问题。如果你需要更多的上下文,请告诉我。事实上,你猜对了,你不应该加载全部内容。如果数据可以部分显示,则必须实现分页。否则,除了加载整个内容之外,您别无选择。但您可以实现随后的伪分页,例如在向下滚动时加载数据。但是由于缺乏背景(项目的类型是什么,互联网上有类似的项目吗?),我不能说如何组织数据。但看起来没问题。了解如何保存图像也很有趣。内部结构可能有用。大多数情况下,每个节点都有一个简单的JSON原型