Ich habe die Firebase-Dokumentation immer wieder gelesen und brauche nur einige Erläuterungen. Dies bezieht sich nicht auf meinen spezifischen Code, sondern auf mein Verständnis von Firebase im Allgemeinen.Firebase Value und ChildAdded (weitere Erklärung benötigt)
Ich weiß, dass .Value
alle Daten jedes Mal abruft, wenn es aufgerufen wird und weiterhin die Datenbank auf Änderungen überwacht. Und .ChildAdded
sucht nach Änderungen in den Kindern der Referenz. Ruft .ChildAdded
auch alle Werte zuerst ab? Sollte ich sowohl .Value
als auch .ChildAdded
für den gleichen Pfad implementieren? Wenn nicht, wenn ich versuche, nur .ChildAdded
zu tun, zeigt sich nichts, aber wenn ich .Value
laufen lasse, erscheinen alle meine Einzelteile, wie sie sollen. Was ich nicht möchte, ist, dass jeder Wert jedes Mal, wenn ein einzelner Wert geändert oder hinzugefügt wird, erneut aus der Datenbank abgerufen wird, da dies später anscheinend zu Bandbreitenproblemen führen würde, wenn ich Tausende von Elementen abrufen muss. Wäre der beste Workflow, eine .Value-Funktion (getAllItems()
) mit ObserveSingleEventOfType zu erstellen, so dass sie nur einmal aufgerufen wird und dann eine doppelte Funktion hat (getNewItems()
) außer mit .ChildAdded
und observeEventOfType?
Sinn macht. Wenn meine Struktur wie data2 ist, warum würde .ChildAdded nicht funktionieren, um alle Werte im Knoten anfänglich zu holen (und weiterhin nach Zusätzen zu suchen), aber .Wert funktioniert? –
Wenn Ihre Struktur wie data2 Kind hinzugefügt wird wird zweimal aufgerufen, 1) der Rückruf snapshot.key wird Subdata1 sein und der Wert wird 1 sein; 2) der Callback snapshot.key wird subdata2 und der Wert wird 2. – Ymmanuel
Es wird auf diese Weise aufgerufen, um zu vermeiden, alle Daten über das Netzwerk die ganze Zeit senden, sendet es nur die neuen Daten als child_changed sendet nur die Daten, die geändert – Ymmanuel