在Firebase规则中正确使用“newData”

时间:2017-10-08 16:40:03

标签: firebase firebase-realtime-database firebase-security

任何人都可以提供有关在Firebase规则中使用“newData”的正确方法的指导吗?我意识到它不能用于'.read'(出于显而易见的原因)但我也注意到Google提供的示例总是在验证规则中使用'newData'。例如,在'hasChild(childPath)'下,Google的指南显示:

".validate": "newData.hasChild('name')"

我也从GitHub找到了这个other link。在研究如何将强大的规则放在一起时,我发现这也非常有用。我注意到'newData'主要用于'validate',很少用'write'。我用“写入”规则找到的唯一“newData”示例来自第二个链接

".write": "!newData.exists()"

我想知道是否有理由这样做。 “newData”如何在“写入”规则中使用有限制吗?例如,以下内容始终有效吗?我的实验表明它没有,但也许我错过了一些东西。

".write": "newData.hasChild('name')"

1 个答案:

答案 0 :(得分:1)

firebaser here

newData变量可用,可以与.write.validate规则一起有效使用。如果你在写规则中有一个很好的用例,那就去吧!

我通常使用.write规则来确保用户具有写入该位置的适当权限。该许可通常不依赖于新数据,而是完全依赖于位置和其他地方的现有数据

另一方面,

.validate规则用于验证新数据的结构是否符合您的应用需求并允许值。因此,这里newData的使用越来越普遍。