2015-12-15 2 views
0

Скажем, у меня есть БД со следующей структурой:Удаление узла, когда он перестает ссылаться другие

root: 
    bananas: 
    banana_a: (potato_1) 
    banana_b: (potato_1) 
    ... 

    potatos: 
    potato_1: (...) 
    potato_2: (...) 
    ... 

т.е. - banana_a и banana_b ссылаются potato_1 (сохранение его уникальный идентификатор).

В моем приложении возможно, что банан перестанет ссылаться на картофель.
Если нет бананов, указывающих на картофель, они будут удалены, чтобы сохранить хранилище.

Я бы предпочел, чтобы удаление картофеля было начато самой БД (по правилу), вместо того, чтобы быть заказанным клиентом. Причина в том, что я не хочу позволять злым пользователям редактировать мой JS &, чтобы это не происходило.

Я не имею ни малейшего представления, как написать такое правило -
.validate правило не может распоряжаться существующими данными, и, следовательно, не имеет смысла в этой ситуации.

Поэтому я прошу вас помочь старым мудрым программистам, разработав проблему.

ответ

0

Правила безопасности Firebase могут разрешать/запрещать операции чтения/записи. Они не могут инициировать вспомогательные чтения или записи на основе указанного вами условия.

Вам придется реализовать это в своем коде приложения. Довольно простой способ сделать это проще - это не только сохранение ссылки с банана на его картофель, но и хранение ссылок на каждый картофель на его бананы.

potatos: 
    potato_1: 
     bananas: 
      banana_a 
      banana_b 
    potato_2: (...) 

Таким образом, когда вы удалите последний банан из картофеля, вы можете легко увидеть, что картофель может быть удален тоже.

+0

Если мой клиент разговаривает напрямую с firebase (вся идея), то я не могу разделить удаление на две команды. Некоторым отверстиям может показаться смешным удалить одну из строк и вызвать изолированный узел, который можно удалить только вручную ... откровенно говоря, ограниченный синтаксис и набор правил firebase делают его несущественным для большинства приложений. Вы отказываетесь от какой-либо функциональности или безопасности, чтобы сделать новаторское приложение. – iDaN5x

Смежные вопросы