Firebase 安全规则 (.write)

Firebase security rule (.write)

我尝试保存任何用户事务日志。因此,例如,当用户创建、更新或删除某些内容时,其日志保存在 "Transactions".

我在编写有关此问题的安全规则 (.write) 时遇到困难。

例如;如果名为 (userKey2) 的用户更新名为 (userKey1) 的用户数据,如下所示:

{ "Users"
   {"userKey1":
      { "Name":"Mike",
        "Age":"18",
        "Location":"Sydney" }
   }
}

我也加到"Transactions"

{ "Transactions" :
    { "Key" :
       { "Object" : "Users",
         "DateTime: "2017-10-25 10:00:00",
         "ObjectKey" : "userKey1",
         "Type" : "Update",
         "Who" : "userKey2"
       }
    }
}

我一起向firebase发送更新命令。 (对于 "Users" 和 "Transactions")保证全部更新或 none.

如何为 "Transactions" 制定(.write)安全规则?因为我想防止任何没有 "Object" 的数据输入到 "Transactions" 并且 "ObjectKey" 确实存在于 "Users" 集合中。

但在我的例子中,none 个还存在(它们都是不同集合中的新数据)所以我无法在 "Users" 集合中检查它。

您可能要考虑使用 Firebase 数据库触发器来实现此功能。客户端应用程序只会写入 "Users" 节点。您可以创建一个触发器,每次对 "Users" 节点下的数据进行更新时都会触发该触发器;该触发器可以将附加条目写入 "Transactions" 节点。

触发器方式保证你只会将数据写入真正存在于Users下的Transactions。只有在用户下添加数据时才会触发触发器。

此外,由于对事务的触发器写入以管理员权限执行,因此您无需向最终客户端用户授予事务节点写入权限。

Here is the documentation on Firebase triggers.