Firebase: вызывается ли child_removed при удалении родительского элемента?

#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 одного из своих слушателей без достаточного количества параметров, что привело к отмене подписки на всех моих слушателей.