#javascript #firebase #firebase-realtime-database
#javascript #firebase #firebase-realtime-database
Вопрос:
Я управляю списком элементов со следующей структурой базы данных:
root
- mylist
- item1: val1
- item2: val2
- ...
Я подключаю child_added
и child_removed
прослушиватели событий к mylist
, и я (правильно) получаю уведомления, когда элементы добавляются или удаляются.
Мой вопрос: должен ли я ожидать child_removed
событий для каждого элемента в списке в случае, если mylist
(т. Е. родительский узел) будет удален?
Документация неясна, и на практике я наблюдаю оба поведения для двух очень похожих списков. Должен ли я получать уведомления (и я что-то делаю неправильно для одного из своих списков), или другой список уведомляет случайно?
В случае, если child_removed
уведомления не гарантированы, вариантом было бы также прослушать child_removed
события на root
узле и проверить, key
совпадают 'mylist'
ли они.
Но это подразумевает добавление .read
доступа ко всему root
дереву для этого пользователя. И с более глубокой иерархией, как узнать, когда удаляется какой-либо из родительских элементов?
Есть ли другой способ тщательно просмотреть содержимое списка, включая удаление самого списка?
Использование firebase JS SDK версии 3.4.1
Ответ №1:
Изучив это подробнее, я нашел ответ. Для дальнейшего использования:
Да, child_removed
будет вызываться для каждого элемента, когда он сам или любой из его предков будут удалены. Смотрите справочную документацию.
Причина, по которой я не увидел этого в моем случае, заключается в том, что я вызвал off
одного из своих слушателей без достаточного количества параметров, что привело к отмене подписки на всех моих слушателей.