2016-11-30 144 views
3

所以我做了一个简单的应用程序,一个三轮车巡逻应用程序,您可以通过登录和填写表单报告鲁莽的三轮车司机(我们这里没有1个问题)。报表包含:Firebase数据库规范化

- created_at 
- description 
- lat 
- lng 
- plateNumber 

到目前为止,这是我的JSON的结构:

enter image description here

有一个更清洁的方式做到这一点?到目前为止,它的工作原理,但我想通过plateNumber得到所有的报告,我认为这将是棘手。

任何建议将不胜感激。

PS:我知道这不是一个关系数据库,虽然我很开放的建议

回答

1

我会建议保持报告分开,并在用户不对其进行分组。如果您需要根据创建的日期对报告进行排序,只需将用户记录中的报告ID与创建的日期一起保存为值即可。事情是这样的

reports 
    9F0A756DF0B849CCAB7FAA0AC089475E 
     - created_at:14804893896 
     ... 
    1C060A2CA16D42CF9DF53FD80A9C6ECA 
    ADC4582B3C5746A487178887A495E005 

users 
    F4C8F5642EC44727B929E3E408321122 
     - email: .... 
     - reports 
      9F0A756DF0B849CCAB7FAA0AC089475E:14804893896 
      1C060A2CA16D42CF9DF53FD80A9C6ECA:14865486878 
    C9E0FAF081AC4447B0C194811314DF0F 
+0

我喜欢这一个。一定会试试! – FewFlyBy

1

现在,当你说你需要正常化数据库...当我有这个问题,我停下来编写代码,并开始思考我的应用程序/ Web ...

  • 我想显示所有报告的列表,按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:" " 
     } 
    } 
} 

在继续,如果您需要从子节点获取列表,您需要规范化节点并生成节点作为索引。 让我知道,如果我已经帮助你,并编程好!

+0

好主意。也会试试这个! – FewFlyBy