Предположим, что у меня есть одна операция. Как удаляет.Использовать off() непосредственно в on() callback Firebase?
var q = ref.child('users').child(targetUserId).child('chat');
q.on('child_added', function(obj) {
obj.ref().remove();
//This works right?
q.off();
});
Могу ли я выполнить off()
непосредственно в on()
обратного вызова? Мне не нужно указывать eventType
правильно?
Ничего другого, чтобы очистить право?
From the docs:
Аналогично, если нет типСобытия или обратного вызова не указано, все обратные вызовы для ссылки будут удалены.
Если вы снова включите и снова включите его, вы можете вместо этого использовать 'once'. –
@FrankvanPuffelen Я пытался использовать 'once()' в немного другой версии приведенного выше примера - 'q.endAt (оцененныйServerTimeMs-5000) .once (...)' - но 'remove()' будет только удалите одну запись (первая в соответствующем наборе). Изменение 'once' на' on' будет удалять все соответствующие записи. Любая идея, почему это может быть? –
При использовании 'once' Firebase будет запускать только одно событие. Поэтому в случае 'child_added' он будет запускаться только для одного ребенка (независимо от того, сколько детей соответствует запросу). Для вашего первоначального вопроса это именно то, что вам нужно. Но для примера использования в вашем комментарии придерживайтесь 'on ('child_added'' и' off' в правильном состоянии или, альтернативно, 'once (' value '', а затем' forEach' над дочерними элементами в снимке. –