任何人都可以提供有关在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')"
答案 0 :(得分:1)
firebaser here
newData
变量可用,可以与.write
和.validate
规则一起有效使用。如果你在写规则中有一个很好的用例,那就去吧!
我通常使用.write
规则来确保用户具有写入该位置的适当权限。该许可通常不依赖于新数据,而是完全依赖于位置和其他地方的现有数据
.validate
规则用于验证新数据的结构是否符合您的应用需求并允许值。因此,这里newData
的使用越来越普遍。