Как вы можете удалить документ со всеми его коллекциями и вложенными вложенными коллекциями? (внутри среды функций)
В RTDB вы можете ref.child('../someNode).setValue(null)
и это завершает желаемое поведение.
Я могу придумать два способа добиться желаемого поведения при удалении, оба с чрезвычайно ужасными недостатками.
-
Создайте "супер" функцию, которая будет пауковать каждый документ и удалять их в пакете. Эта функция будет сложной, хрупкой для изменений и может занять много времени.
-
Добавьте триггеры onDelete для каждого типа документа и удалите все прямые подколлекции. Вы вызовете delete для корневого документа, и вызовы удаления будут распространяться вниз по "дереву". Это вяло, масштабируется ужасно и дорого из-за колоссальной нагрузки при выполнении функций.
Представьте, что вам нужно удалить "ГРУППУ" и все это дети. Было бы очень хаотично с № 1 и дорого с № 2 (1 вызов функции на документ)
groups > GROUP > projects > PROJECT > files > FILE > assets > ASSET
> urls > URL
> members > MEMBER
> questions > QUESTION > answers > ANSWER > replies > REPLY
> comments > COMMENT
> resources > RESOURCE > submissions > SUBMISSION
> requests > REQUEST
Существует ли лучший/предпочтительный/более чистый способ удаления документа и всех вложенных в него вложенных коллекций?
Это должно быть возможно, учитывая, что вы можете сделать это с консоли.