【发布时间】: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