当用户注册并在firestore中初始化他们的数据时,我想验证他们是否没有试图设置自己的角色(例如,他们没有将其设置为"admin"(。
我试着写这个:
match /users/{userId} {
allow create: if (signedInAs(userId) && !request.resource.data.role) || isAdmin();
...
但我只看到"属性角色在对象上未定义。">
有安全的方法吗?或者这意味着我应该始终初始化期望的字段,即使它只是空字符串?这似乎不太符合NoSQL的理念?
使用in
运算符来查找对象的属性是否不存在。
!("role" in request.resource.data)
这会产生一个布尔值。请参阅规则API文档中的Map类型。
如果其他解决方案不起作用,请尝试使用writeFields
。
!("role" in request.writeFields)