Googles Antwort auf "Warum können Sie keine erweiterten Abfragen durchführen?" ist einfach "Restrukturieren Sie Ihre Daten, so dass Sie keine erweiterten Abfragen benötigen"
Dies mag wie eine billige Ausschneide erscheinen, aber die Idee ist, da Firebase angeblich Echtzeit ist, muss es Daten abfragen als so schnell wie möglich, und es könnte nicht genug Zeit/Ressourcen geben, um erweiterte Abfragen auszuführen. Dies ist aus der Sicht von Google sinnvoll, da sie nicht einfach mehr Serverressourcen bereitstellen können, die nur für Sie verfügbar sind. Bei Google ist es einfach: "Wir stellen Ihnen alle Daten zur Verfügung, wenn Sie sie brauchen, es ist Ihre Aufgabe, sie konsistent zu machen und alles zu tun, was Sie wollen."
Aus diesem Grund muss Ihr Node-Backend wie ein Server-Proxy, wo die tatsächlichen Daten von Firebase abgerufen werden und die erweiterten Abfragen für diese Daten ausgeführt werden und die abgefragten Daten zurück an den Client gesendet werden. Oder Sie können serverlos gehen und dies direkt auf dem Client tun, aber dies ist, wie Sie erwähnt haben, möglicherweise nicht immer sicher für diese hochsensiblen Daten.
Grundsätzlich können Sie nicht unbearbeitete Daten vermeiden, diese Daten können jedoch minimal bleiben. Dies kann durch eine Umstrukturierung Ihrer Daten erreicht werden.
Der Rat Google gibt ist, dass Sie,
Struktur Ihre Daten nach Ihren Ansichten - Firebase, Google
Das bedeutet, dass, sagen, wenn eine Aussicht hatte, die Informationen über eine zeigt Rechnung.Traditionell, wenn Sie von SQL kommen sind, dann würden Sie so etwas wie diese
+ invoice
+ i01
+ date: xxx
+ customer: xxx
+ invoice_items
+ ii01
+ invoice: i01
+ product: p
+ qty: 1
...
entwerfen, was Google will Dich
+ invoice
+ i01
+ date: xxx
+ customer: xxx
+ items: [
{
+ product: p
+ qty: 1
}]
...
diese Art und Weise zu tun ist, müssen Sie nicht ‚Notwendigkeit‘ tun eine erweiterte Abfrage, da alle Daten, die Sie für Ihre Ansicht benötigen, bereits vorhanden sind.
Das mag wie ein Schritt zurück erscheinen, denn wenn Sie darüber nachdenken, führt dies früher oder später zu einem inkonsistenten Zustand der Datenbank, und Sie haben Recht, manchmal tut es das auch. Aber Firebase stellt Maßnahmen zur Verfügung, wie zB multipath updates.
Hoffe das hilft :)
Weg zu vage eine Frage. Ihre Definition von "erweiterte Abfrage" und meine könnte sehr unterschiedlich sein. Bitte geben Sie ein konkretes Beispiel an, zeigen Sie etwas Code und Ihre Firebase-Struktur. Überprüfen Sie auch [Wie Sie fragen] (http://stackoverflow.com/help/how-to-ask). Aktualisieren Sie Ihre Frage und wir versuchen zu helfen! – Jay