Firebase for complex query. A no go?

后端 未结 1 425
孤独总比滥情好
孤独总比滥情好 2020-12-06 12:48

I\'ve moved from parse-server to firebase for my new project, but reached a point in the project where I beginning to think it was a bad idea.

Basically, I\'m makin

相关标签:
1条回答
  • 2020-12-06 13:30

    Incredibly complex queries can be crafted in Firebase. The data needs to be stored in a structure that lends itself to being queried and most importantly, don't be afraid of duplicate data.

    For example, lets assume we have an app that enables a user to select a concert for a particular year and month, a specific city, and in a particular genre.

    There are 3 parameters

    year_month city genre

    The UI first queries the user to select a City

    Austin
    

    then the UI asks to select a year and month

    201704
    

    then a genre

    Rock
    

    Your Firebase structure looks like this

    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
    

    Your UI has already polled the user for the query info and with that, build a query string

    Austin_201704_Rock
    

    and then query the 'city_date_genre' node for that string and you have your data.

    What if the user wanted to know all of the concerts in Austin for April 2017

    queryStartingAt("Austin_201704").queryEndingAt("Austin_201704")
    

    You could easily expand on this by adding another query node and changing the order of the data

    concerts
      concert_00
       city: Memphis
       year_month: 201706
       genre: Country
       city_date_genre: Memphis_201606_Country
       city_genre_date: Memphis_Country_201606
    

    And depending on which order the user selects their data, you could query the associated node.

    Adding additional nodes is a tiny amount of data and allows for very open ended queries for the data you need.

    0 讨论(0)
提交回复
热议问题