Powiedzmy, że mam operację "I". Podobnie jak usuwa.Skorzystaj z off() bezpośrednio w wywołaniu zwrotnym on() Firebase?
var q = ref.child('users').child(targetUserId).child('chat');
q.on('child_added', function(obj) {
obj.ref().remove();
//This works right?
q.off();
});
Mogę wykonać off()
bezpośrednio w on()
zwrotnego? Nie muszę określać poprawności eventType
?
Nic innego do porządkowania, prawda?
From the docs:
Podobnie, jeśli nie określono inaczej eventType lub oddzwanianie wszystkie wywołania zwrotne dla odniesienia zostanie usunięty.
Jeśli włączasz i wyłączasz ponownie w ten sposób, możesz rozważyć użycie 'once' zamiast tego. –
@FrankvanPuffelen Próbowałem użyć 'once()' w nieco innej wersji powyższego przykładu - 'q.endAt (estimServerTimeMs-5000) .once (...)' - ale tylko 'remove()' usuń pojedynczy rekord (pierwszy w zestawie dopasowującym). Zmiana 'once' na' on' usunie wszystkie pasujące rekordy. Jakiś pomysł, dlaczego tak się dzieje? –
Używając 'once' Firebase uruchomi tylko jedno zdarzenie. Tak więc w przypadku 'child_added' będzie uruchamiany tylko dla jednego dziecka (bez względu na to, ile dzieci pasuje do zapytania). Na oryginalne pytanie, które jest dokładnie to, czego potrzebujesz. Ale rzeczywiście w przypadku przypadku użycia w twoim komentarzu, trzymaj się 'on ('child_added'' i' off' it on we właściwym stanie lub alternatywnie 'once (' value'', a następnie' forEach' nad dziećmi w migawce. –