Ich habe einen großen Datensatz (~ 100k Einträge), die mit dem 'Child_Added' Ereignis abonniert wird. Mit knoten 7 und Firebase 3.6.1 scheint dies die gesamten 100k Einträge herunterzuladen, bevor ein einzelnes child_added Ereignis ausgelöst wird.Child_added Abonnement scheint gesamten Datensatz herunterladen
Der Speicherverbrauch nimmt für einige Dutzend Sekunden deutlich zu, und dann werden alle child_added-Ereignisse schnell hintereinander ausgelöst. Diese
ist langsam:
require('firebase').
initializeApp({databaseURL: 'https://someproject.firebaseio.com'}).
database().ref('data').
on('child_added', (snap) => console.log(snap.key));
Begrenzung noch schnell (wenige Sekunden Verzögerung) ist:
require('firebase').
initializeApp({databaseURL: 'https://someproject.firebaseio.com'}).
database().ref('data').limitToFirst(10).
on('child_added', (snap) => console.log(snap.key));
In Anbetracht der Natur der Streaming von Firebase, ich nehme an, es nicht Verhalten für child_added Abonnements beabsichtigt ist, Laden Sie den gesamten Datensatz auf den Client herunter, bevor etwas erledigt ist.
Mache ich etwas falsch, oder ist das ein Fehler?
Dies erklärt nicht, warum der gesamte Datensatz zuerst heruntergeladen wird, bevor eines der child_added-Ereignisse ausgelöst wird. Das erwartete Verhalten besteht darin, dass diese Ereignisse ausgelöst werden, wenn die Einträge heruntergeladen werden, oder zumindest in kleineren Batches. Ich habe die Codebeispiele geändert, danke, dass Sie mich wissen lassen. – tjclement
Ok, ich aktualisiere meine Antwort ... – Anfuca
Das widerspricht dem, wofür Firebase entwickelt wurde (streaming in data), also fällt es mir schwer zu akzeptieren, dass dies wirklich beabsichtigt ist. – tjclement