Chcę załadować wszystkie elementy na początku bez pokazywania żadnej wiadomości, ale raz po załadowaniu. Chcę przechwycić dowolny nowy wiersz w subskrybencie i pokazać go na powiadomieniu na pulpicie.jak sprawdzić, czy subskrybowanie zostało zakończone, ładowanie wszystkich istniejących wierszy?
Problem polega na tym, że nie jestem pewien, jak sprawdzić, czy wszystkie poprzednie elementy zostały załadowane i czy wiersz jest nowym elementem, czy też jest z poprzedniego istniejącego elementu.
this.items = this.af.database.list('notifications/'+this.uid+'/');
this.items.subscribe(list => {
list.forEach(row => {
// doing something here...
});
// once all the rows are finished loading, then any new row, show desktop notification message
});
AngularFire2 robi to wewnętrznie i emituje tablicę bieżących "rzędów" z obserwowalnego. Będziesz musiał sam zbadać tablicę, aby ustalić, co nowego. Zamiast tego możesz użyć bazowego interfejsu API Firebase. Jeśli użyjesz 'on (" child_added ", ...)' i 'once (" value ", ...)', zdarzenia 'child_added', które otrzymasz przed zdarzeniem' value' będą reprezentować początkowe 'wiersze' i kolejne zdarzenia 'child_added' będą zawierały nowe" wiersze ". – cartant
czy masz przykład tego z kodem angularowym? Nie mogę znaleźć tam dokumentacji na temat tego, jak go używać ("child_added" ...) – Basit
Jest w bazowym [Firebase API] (https://firebase.google.com/docs/reference/js/firebase.database. Odniesienie). Możesz zobaczyć, jak jest używany w źródle [AngularFire2] (https://github.com/angular/angularfire2/blob/2.0.0-beta.5/src/database/firebase_list_factory.ts#L102-L156) dla listy zauważalny. – cartant