在节点停止被其他人引用时删除该节点

时间:2015-12-15 16:37:21

标签: firebase firebase-security

假设我有一个具有以下结构的数据库:

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

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

即。 - banana_abanana_b引用potato_1(保存其唯一标识符)。

在我的应用程序中,香蕉可能会停止引用马铃薯 当没有香蕉指向马铃薯时,它将被删除以节省存储空间。

如果删除马铃薯将由DB本身(由规则引导)启动,而不是由客户订购,我更愿意这样做。 原因是我不想让邪恶的用户编辑我的JS&防止它发生。

我不知道如何写这样的规则 -
.validate规则无法处理现有数据,因此在这种情况下无效。

因此,我会请求老聪明的程序员帮助解决问题。

1 个答案:

答案 0 :(得分:0)

Firebase安全规则可以允许/禁止读/写操作。它们无法根据您指定的条件触发辅助读取或写入。

您必须在应用程序代码中实现此功能。一种非常常见的方法是不仅可以将香蕉的参考物存放到马铃薯上,还可以将每种马铃薯的参考物存储到香蕉中。

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

这样当你从马铃薯上取下最后一根香蕉时,你可以很容易地看到马铃薯也可以去掉。