gpt4 book ai didi

Firebase用于复杂查询。不行吗?

转载 作者:行者123 更新时间:2023-12-04 14:40:21 24 4
gpt4 key购买 nike

对于我的新项目,我已经从解析服务器转移到了Firebase,但是在项目中我开始认为这是个坏主意。

基本上,我正在开发一个应用程序,人们可以在该应用程序中发布有关其镇上正在进行的音乐会的信息。

我的第一个挑战是过滤事件,因此用户只能在自己的城镇中获得事件。我是通过构建城市之后的数据来完成此操作的:

{
concerts: {
"New york": {
...,
...
},
"Chicago": {
...,
...
}
}
}

然后我想我需要针对音乐会类型的另一个过滤器,例如摇滚,流行音乐等。因此,尽管我进行了另一次重组。但是,可能需要再增加5到10个过滤器,并且以良好的方式构造数据库将变得非常困难。

我虽然是关于多个查询的,但这是不允许的:
firebase.database().ref("concerts")
.orderByChild("type").equalTo("rock")
.orderByChild("length").equalTo("2")
.orderByChild("artist").equalTo("beatles")

我考虑过从服务器获取所有,然后在客户端中过滤结果。但是,我看到了两个问题:
  • 可能会下载大量不必要的数据。
  • 某些音乐会仅将锁定给某些用户(例如,参加过至少10场其他音乐会的用户),并且出于安全考虑,可能会将这些音乐会带回家,不允许用户观看这些音乐会。

  • 我曾想过要结合使用过滤器来创建查询键,例如 this,但是如果过滤器超过10个,它将变得很复杂。

    有解决方案吗?还是我应该忘记此用例的Firebase?

    提前致谢

    最佳答案

    可以在Firebase中制作极其复杂的查询。数据需要存储在易于查询的结构中,最重要的是,不要害怕重复数据。

    例如,假设我们有一个应用程序,使用户可以选择特定年份和月份,特定城市和特定类型的音乐会。

    有3个参数

    年_月
    城市
    类型

    用户界面首先查询用户以选择城市

    Austin

    然后用户界面要求选择年份和月份
    201704

    然后一种流派
    Rock

    您的Firebase结构如下所示
    concerts
    concert_00
    city: Memphis
    year_month: 201706
    genre: Country
    city_date_genre: Memphis_201606_Country
    concert_01
    city: Austin
    year_month: 201704
    genre: Rock
    city_date_genre: Austin_201704_Rock
    concert_02
    city: Seattle
    year_month: 201705
    genre: Disco
    city_date_genre: Seattle_201705_Disco

    您的用户界面已经向用户轮询了查询信息,并以此构建查询字符串
    Austin_201704_Rock

    然后在“city_date_genre”节点中查询该字符串,您便拥有了数据。

    如果用户想了解奥斯汀2017年4月的所有音乐会怎么办
    queryStartingAt("Austin_201704").queryEndingAt("Austin_201704")

    您可以通过添加另一个查询节点并更改数据顺序来轻松地对此进行扩展
    concerts
    concert_00
    city: Memphis
    year_month: 201706
    genre: Country
    city_date_genre: Memphis_201606_Country
    city_genre_date: Memphis_Country_201606

    根据用户选择数据的顺序,您可以查询关联的节点。

    添加额外的节点只需要少量的数据,并且可以对您需要的数据进行开放式查询。

    关于Firebase用于复杂查询。不行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42672790/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com