【问题标题】:Firebase Data Structure GuidanceFirebase 数据结构指南
【发布时间】:2023-04-03 13:14:01
【问题描述】:

我一直在研究 Firebase 作为最近弃用的 Dropbox Datastore API 的替代方案。我读过关于结构化数据的文章,但我还是有点不清楚。

我有很多用户:

users
- name
- email

...每个用户都有三个数据库“表”,aircraftentriescustomFields

aircraft
- name
- category
- make

entries
- flightDate
- departure
- destination

customFields
- name
- type

那么我的 Firebase 数据结构会是这个样子吗?

{
    “users”: {
        “bob”: {
            “name”: …
            “email”: …
        },
        “sally”: {
            “name”: …
            “email”: …
        }
    },
    “aircraft”:{
        ???
    },
    “entries”:{
        ???
    },
    “customFields”:{
        ???
    }
}

提前致谢。

【问题讨论】:

标签: firebase


【解决方案1】:

您熟悉面向对象编程吗?每个“表”都是一个对象。就个人而言,我会做以下事情。由于我不明白你想用数据库及其对象实现什么,这可能不正确:

{
  "user": {
    "name": "bob",
    "aircraft": {
      "name": "name"
    },
    "entries": {
      "flightdate": "27/05/2015"
    }
  }
}

考虑对象,而不是表格。想想父母和孩子。

但在您的示例中,如果每个对象(用户、飞机、条目等)都是复数,您可以将它们视为“表”,它只是一个对象数组:

{
  "aircrafts":[
    {
      "id":1,
      "name": "name"
    },
    {
      "id":2,
      "name": "name"
    }
  ]
}

编辑:我的第一个例子是如果每个用户都有一架飞机,回想起来这很愚蠢,但我的观点仍然成立。

【讨论】:

  • 如果我澄清一些事情也许会有所帮助。每个用户有许多飞机(飞机数组)和许多条目(条目数组中的数千个)。
  • 没关系,如果你结合我的两个例子,你应该会到达你需要去的地方。使用第二个示例作为条目和飞机的基础。您可以这样存储它们。您可以根据需要嵌套和存储任意数量。我担心的一个问题是,如果记录如您所说,Firebase 可能不是您的平台。不过,我不是 Firebase 性能方面的专家。
  • 我对性能也有同样的担忧。我仍在四处寻找合适的可同步数据平台。
  • 您查看过有关 Firebase 性能的统计数据吗?它得到谷歌的支持,因此它拥有基础设施。我自己会看一看,但我现在在床上。不过我自己很好奇。如果我发现了什么,我会告诉你的。
  • 只是附带说明,您可能希望避免使用数组。查看博文,Best Practices: Arrays in Firebase - “为什么不只存储数组而不是对象?数组是邪恶的”
猜你喜欢
  • 2012-04-30
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多