我尝试保存任何用户事务日志。因此,例如当用户创建,更新或删除某些内容时,其日志将保存在" 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发送更新命令。 (对于"用户"和#34;交易")保证更新所有或不更新。
如何为"交易"制作(.write)安全规则? ?因为我想阻止任何数据输入到" Transactions"没有它的"对象"和#34; ObjectKey"真的存在于"用户"采集。
但在我的例子中,它们都不存在(它们都是不同集合中的新数据)所以我无法在"用户"集合。
答案 0 :(得分:0)
您可能需要考虑使用Firebase数据库触发器来实现此功能。客户端应用程序只会写入“用户”节点。您可以创建一个触发器,每次在“Users”节点下对数据进行更新时都会触发该触发器;该触发器可以将附加条目写入“Transactions”节点。
触发器方法可确保您只将数据写入“用户”下真正存在的“事务”。触发器仅在用户下添加数据时触发。
此外,由于对事务的触发器写入以管理员权限执行,因此您无需为事务节点提供对最终客户端用户的写访问权。