Ich habe eine Anwendung, in der ich eine gewisse Anzahl von Anfangsdaten laden möchte (durchgeführt mit Firebase.once('value')
) und dann später möchte ich Ereignisse von Kind-Knoten erhalten, die hinzugefügt wurden zu dieser Firebase-Referenz.Firebase child_added, ohne zuerst alle Daten zu laden
Dafür würde ich gerne Firebase.on('child_added')
verwenden, aber nach der Definition (und in der Praxis gesehen) lädt es alle Daten bei dieser Firebase-Referenz zuerst.
Gibt es eine Möglichkeit, dieses Verhalten zu umgehen und nur auf Ereignisse child_added
zu hören. Außerdem sind Umgehungslösungen wie das Dumping der anfänglichen Datenmenge keine Lösungen (stellen Sie sich ein Dataset mit mehr als einer Million Datenpunkten vor - ich möchte nicht jeden Datenpunkt haben, auf den nur gewartet werden soll, wenn ein hinzugefügt wird!).
EDIT: Firebase.on('child_added')
kann mit limit()
kombiniert werden, um die Datenmenge zu begrenzen, die von der ersten Anfrage kommt. Wahrscheinlich wird für meine Anwendung nur ein Datenpunkt zum Firebase zu einem Zeitpunkt hinzugefügt, so dass ich Firebase.limit(1).on('child_added')
verwendet habe, was die Menge der initialen Daten begrenzt, die auf einen einzelnen Datenpunkt geladen werden. Aber ich mag diese Problemumgehung aus zwei Gründen nicht:
- Es ist immer noch ein Workaround. Ich muss immer noch Daten ignorieren, die ich nicht ignorieren sollte.
- Wenn aus irgendeinem Grund die Natur meiner Anwendung geändert werden sollte und ich mehrere Kinder zum Firebase-Verweis auf einmal hinzufügen sollte - würde die Anwendung eine
limit(1)
begrenzen, die alle hinzugefügten Kinder empfängt? Ich bin mir nicht sicher, ob dies der Fall ist oder obchild_added
für jedes einzelne hinzugefügte Kind aufgerufen wird, unabhängig davon, ob sie als Stapel hinzugefügt wurden.
Es scheint eine true/false
Flagge als Argument für den Anruf wie die Bereitstellung eine schöne Lösung wäre, aber ich werde abwarten, ob eine Antwort gibt es Ich habe über wurde polier ...
Sie können den Erstellungszeitstempel zu jedem Dataset hinzufügen und den aktuellen Zeitstempel als 'startAt'-Abfrage https://www.firebase.com/docs/ordered-data.html https://www.firebase.com/docs verwenden /javascript/query/startat.html – Prinzhorn
Das würde gut mit der Art funktionieren, wie die Dinge derzeit strukturiert sind - der "Schlüssel" der Daten (in einem Schlüssel: val-Format) ist der Zeitstempel der Daten. Danke für die Information! – MandM