【问题标题】:Firebase Database NormalizationFirebase 数据库规范化
【发布时间】:2017-04-14 11:00:26
【问题描述】:
所以我做了一个简单的应用程序,一个三轮车巡逻应用程序,您可以通过登录并填写表格来报告鲁莽的三轮车司机(在我们城市没有一个问题)。报告表包含:
- created_at
- description
- lat
- lng
- plateNumber
到目前为止,这是我的 json 的结构:
有没有更清洁的方法来做到这一点?到目前为止,它可以工作,例如我想通过plateNumber 获取所有报告,我认为这会很棘手。
任何建议将不胜感激。
PS:我知道它不是关系数据库,尽管我愿意接受建议
【问题讨论】:
标签:
javascript
json
firebase
firebase-realtime-database
【解决方案1】:
现在正如您所说,您需要 normalize 数据库...当我遇到这个问题时,我会停止编写代码并开始考虑我的应用程序/网络...
- 我想显示所有报告的列表,另一个按
plate 排序并由其他人排序的列表?
- 或者在所有报告列表中按
plate排序?
如果您的答案是第一个,那么您需要生成节点作为索引,如下所示:
reports{
report_id{
created_at:" "
description:" "
lat:" "
lang:" "
location:" "
plate_number:" "
}
}
reports_idx_plate{
plate_number1{
report_id1:"true"
report_id2:"true"
report_id3:"true"
report_id4:"true"
}
}
如果您的答案是第二个,那么您最好的选择就是这个:
reports{
plate_number{
report_id{
created_at:" "
description:" "
lat:" "
lang:" "
location:" "
plate_number:" "
}
}
}
如果需要从子节点获取列表,则需要对节点进行规范化并将节点生成为索引。
让我知道我是否对您有所帮助并进行了良好的编程!
【解决方案2】:
我建议将报告分开,不要将它们归为用户。如果您需要根据创建日期对报告进行排序,只需在用户记录中保留一个报告 ID,并将创建日期作为值。像这样的
reports
9F0A756DF0B849CCAB7FAA0AC089475E
- created_at:14804893896
...
1C060A2CA16D42CF9DF53FD80A9C6ECA
ADC4582B3C5746A487178887A495E005
users
F4C8F5642EC44727B929E3E408321122
- email: ....
- reports
9F0A756DF0B849CCAB7FAA0AC089475E:14804893896
1C060A2CA16D42CF9DF53FD80A9C6ECA:14865486878
C9E0FAF081AC4447B0C194811314DF0F