Ich bin von Parse-Server zu Firebase für mein neues Projekt umgezogen, aber erreichte einen Punkt in dem Projekt, wo ich anfing zu denken, dass es eine schlechte Idee war.Firebase für komplexe Abfrage. Ein Nein gehen?
Im Grunde mache ich eine App, wo Leute Informationen über Konzerte in ihrer Stadt veröffentlichen können.
Meine erste Herausforderung bestand darin, die Ereignisse zu filtern, damit ein Benutzer nur Ereignisse in seiner eigenen Stadt bekommt. Ich tat dies die Daten nach der Städte durch die Struktur:
{
concerts: {
"New york": {
...,
...
},
"Chicago": {
...,
...
}
}
}
Dann Ich denke, ich brauche einen anderen Filter für die Art von Konzert, z Rock, Pop, etc. Also, obwohl ich ich eine weitere Umstrukturierung tat. Es muss jedoch wahrscheinlich 5-10 weitere Filter geben, und es wird sehr schwierig werden, die Datenbank auf eine gute Weise zu strukturieren.
ich aber über mehrere Abfrage, aber das war nicht erlaubt:
firebase.database().ref("concerts")
.orderByChild("type").equalTo("rock")
.orderByChild("length").equalTo("2")
.orderByChild("artist").equalTo("beatles")
Ich dachte über, von dem Server alles holen und dann das Ergebnis in dem Client filtern. Ich sehe jedoch zwei Probleme damit:
- Es könnte eine Tonne unnötigerweise Daten heruntergeladen werden.
- Einige Konzerte werden nur für bestimmte Benutzer gesperrt (z. B. Benutzer, die mindestens 10 andere Konzerte besucht haben), und es könnte ein Sicherheitsaspekt sein, diese Konzerte nach Hause zu ziehen, damit sie nicht gesehen werden können.
Ich dachte über die Kombination von Filter Abfrageschlüssel zu erstellen, wie diese this, aber mit mehr als 10 Filter, wird es zu komplex geworden.
Gibt es eine Lösung für dieses Problem oder sollte ich den Firebase für diesen Anwendungsfall vergessen?
Vielen Dank im Voraus
"Ist Firebase gut für mich?" ist eine Frage, die zu subjektiven Antworten führen wird. Firebase ist eine großartige Ergänzung für einige Entwickler und eine lausige Passform für andere. –
Verwenden Sie es in Kombination mit elasticsearch. Firebase-Datenbank ist eine gute Echtzeit-db, aber für mehr maßgeschneiderte Daten, um elastisch zu dienen, ist der Weg zu gehen. Der einzige Nachteil ist, dass Sie am Ende einen Server Hosting elastic-Suche verwenden, die die Idee der Serverless-Architektur ein wenig bricht –