【问题标题】:Firebase Firestore Security Rules: Allow subset of fieldsFirebase Firestore 安全规则:允许字段子集
【发布时间】:2018-02-13 05:15:29
【问题描述】:

我有一个数据库,其中我的用户文档可以包含以下字段:

['name', 'email', 'dob', 'gender', 'country', 'profile', `notificationToken`]

我希望在请求文档具有这些字段的子集时创建文档 hasAll() 在这里不起作用(因为要创建的文档可能没有所有字段),hasAny() 也不起作用(因为要创建的文档不能包含像'photo' 这样的无效字段)。

另外,我希望如果存在一个字段,例如'name',它应该是一个字符串。现在如果我使用:

allow create, update: if request.resource.data.name is string

如果 name 字段不在我要创建的文档中,(如果我稍后设置 notificationToken 字段并使用 setOptions.merge() 就会出现这种情况),它会像我一样返回 false 或错误不设置字段。但我希望它仅在字段存在时强制使用 string 数据类型。我也想做同样的事情,我可以单独设置配置文件对象并使用合并,但也强制数据类型。

有没有办法在安全规则中实现这一点?

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-security


    【解决方案1】:

    要检查字段子集,您可以在相反的方向使用hasAll 以达到所需的效果,例如:

    allow create, update: if ['name', 'email', 'dob', 'gender', 'country', 'profile', 'notificationToken'].hasAll(request.resource.data.keys());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2021-09-08
      • 2021-07-08
      • 2020-09-18
      • 1970-01-01
      • 2018-12-26
      相关资源
      最近更新 更多