【问题标题】: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
    

    【讨论】:

    • 我喜欢这个。一定会试试的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2012-06-21
    相关资源
    最近更新 更多