Mam aplikację, w której chcę załadować pewną ilość danych początkowych (wykonanych z Firebase.once('value')
), a następnie w którymś momencie chciałbym otrzymywać zdarzenia z węzłów potomnych, które zostały dodane do tego odniesienia do Firebase.Firebase child_added bez wczytywania wszystkich danych najpierw
W tym celu chciałbym użyć Firebase.on('child_added')
, ale zgodnie z definicją (i widzianą w praktyce) najpierw ładuje WSZYSTKIE dane z tego punktu odniesienia Bazy Firebase.
Czy istnieje sposób na obejście tego zachowania i tylko nasłuchiwanie zdarzeń child_added
. Również obejścia, takie jak wyrzucanie początkowego zestawu danych, nie są rozwiązaniem (wyobraź sobie zestaw danych zawierający ponad milion punktów danych - nie chcę mieć każdego punktu danych tylko po to, aby nasłuchiwać, gdy ktoś doda!).
EDYCJA: Firebase.on('child_added')
można łączyć z limit()
w celu ograniczenia ilości danych pochodzących z pierwotnego żądania. Prawdopodobnie dla mojej aplikacji, tylko jeden punkt danych zostanie dodany do Firebase w pewnym momencie, więc użyłem Firebase.limit(1).on('child_added')
, który ogranicza ilość danych początkowych załadowanych do pojedynczego punktu danych. Ale nie podoba mi się to obejście z dwóch powodów:
- To wciąż obejście problemu. Nadal muszę ignorować dane, których nie powinienem się martwić ignorowaniem.
- Jeśli z jakiegoś powodu charakter mojej aplikacji miał zostać zmieniony, a ja miałem dodać wiele dzieci do referencji Firebase naraz - czy nałożenie limitu na
limit(1)
ograniczyłoby otrzymywanie wszystkich dodanych dzieci? Nie jestem pewien, czy tak jest w tym przypadku, lub czy zostanie wywołanechild_added
dla każdego dodanego dziecka niezależnie, czy zostały dodane jako partia.
Wydaje się, zapewniając true/false
flagę jako argument do wywołania będzie to miłe rozwiązanie, ale będę czekać, aby zobaczyć, czy tam jest odpowiedź Byłem tuszowanie ...
Można dodać znacznik czasu utworzenia do każdego zestawu danych i użyć aktualnego znacznika czasu jako zapytania "startAt" https://www.firebase.com/docs/ordered-data.html https://www.firebase.com/docs /javascript/query/startat.html – Prinzhorn
To działałoby dobrze ze sposobem, w jaki rzeczy są obecnie zorganizowane - "kluczem" danych (w kluczu: format val) jest znacznik czasu danych. Dzięki za informację! – MandM