【问题标题】:Creating Nested Object Firebase structure创建嵌套对象 Firebase 结构
【发布时间】:2017-03-20 10:45:51
【问题描述】:

我使用 Firebase 作为我的 Android 项目的数据库。在这个项目中,我的用户关联的数据最少。

    users{
      1234-567-897:{
          Display:"Name",
          Email:"foo@bar.ca"
      },
    ...

我用一个带有两个本地字符串变量的基本对象 User 制作了这个结构。

我的问题是我现在需要为每个用户添加一个时间表,其中包含一个事件列表,每个事件都有自己的信息(开始时间、结束时间等)

我知道我的结构可能看起来像这样:

users{
  1234-567-897:{
      Display:"Name",
      Email:"foo@bar.ca",
      Schedule:{
          event1:{
               name:"Meeting",
               startTime:1,
               endTime:2
          },
          event2:{...}
      },
      Sschedule2:{...}
  },

但我不知道如何使用 Firebase 创建这种类型的结构。我最初打算使用 ArrayList 来保存 Schedules 和 Events 的对象,但在阅读 Firebase 文档后,看起来它们不支持 ArrayList 存储。我正在考虑的另一种方法是创建一个单独的时间表表并使用 uid 引用它们。

感谢有关创建此结构的任何建议,谢谢!

【问题讨论】:

标签: android firebase data-structures firebase-realtime-database


【解决方案1】:

这些似乎是您的数据所需的最小类:

public class Event {
  public String name;
  public Long startTime;
  public Long endTime;
}

public class User { 
  public String Display;
  public String Email;
  public Map<String, Event> Schedule;
}

Schedule 是一个映射,其中的键是event1event2

我没有添加Schedule2,因为它的类型未指定。

【讨论】:

  • 这假定日程中的所有事件都有不同的名称。
  • 我认为 Map 对象是我所缺少的,谢谢!
  • @JamesB:对于 Firebase 数据库,这是推荐用于类似列表的结构的结构。见firebase.google.com/docs/database/web/…firebase.googleblog.com/2014/04/…
  • @FrankvanPuffelen 我的评论比任何库/数据库都更特定于 Java。如果 map 的 key 是事件的名称,两个同名的不同事件在存储在 Schedule 中时会相互覆盖。如果每个事件的键是唯一的,那么我的初始评论可以忽略。
  • 上面的 Schedule 映射将在 JSON 结构中的节点名称上键入。所以上面示例中的event1event2,但在大多数Firebase 数据库项目中,它们将是[自动生成的推送ID](firebase.googleblog.com/2015/02/the-2120-ways-to-ensure- unique_68.html)。
猜你喜欢
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多