Firestore安全规则:如何验证字段是否未定义



当用户注册并在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)

最新更新