firebase - Firestore安全规则: How to validate that a field is undefined?

标签 firebase google-cloud-firestore firebase-security

当用户注册并在 firestore 中初始化其数据时,我想验证他们没有尝试设置其角色(即,例如,他们没有将其设置为“admin”)。

我试着写这个:

match /users/{userId} {
  allow create: if (signedInAs(userId) && !request.resource.data.role) || isAdmin();
  ...

...但我只看到“对象上的属性角色未定义。”

有没有办法安全地做到这一点?或者这是否意味着我应该始终初始化预期字段,即使它只是空字符串?这似乎不太符合NoSQL 的哲学?

最佳答案

使用in运算符来查找对象的属性是否不存在。

!("role" in request.resource.data)

这会产生一个 bool 值。请参阅 Map 的规则 API 文档。类型。

关于firebase - Firestore安全规则: How to validate that a field is undefined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53458413/

相关文章:

android - 无法使用 Firebase 广告 : No static method zzc(Landroid/os/Bundle;

reactjs - React Native to firestore : Firestore (8. 2.1):连接 WebChannel 传输出错

firebase - 如何在 SliverGrid 中添加过滤器以仅显示 StreamBuilder 结果的一部分

javascript - Firebase API 不响应使用 Axios on react native 的常见错误代码

firebase - 无法使 Firestore 规则中包含 'get' 部分的函数正常工作

ios - 如何使用委托(delegate)将数据从页脚单元格传递到 View Controller ?

javascript - 如何使用 Vue.js Firebase UID 删除用户

firebase - Firestore 从不同位置的另一个项目导入数据

java - 如何检查当前用户是否在 Firebase (Android Java) 上经过身份验证

java - 如何因 Firebase 存储中的文件大小限制规则而出现拒绝上传错误