【发布时间】:2019-11-03 15:38:28
【问题描述】:
This article 声明“[writeFields] 现已弃用”。
此外,我找不到writeFields 的任何文档,它甚至不再作为Request 的一部分在文档中列出。
问题
我在使用 Cloud Firestore 安全规则时面临的问题是,验证是否仅修改了特定字段需要大量条件。
例如,如果我想验证一个文档的唯一修改值是cakes,我必须编写如下规则:
allow update: if request.resource.data.size() == 20
&& request.resource.data.likes == resource.data.likes
&& request.resource.data.name == resource.data.name
&& request.resource.data.date == resource.data.date
&& request.resource.data.body == resource.data.body
&& request.resource.data.title == resource.data.title
&& request.resource.data.tags == resource.data.tags
&& request.resource.data.comments == resource.data.comments
&& request.resource.data.answers == resource.data.answers
&& request.resource.data.awards == resource.data.awards
&& request.resource.data.image == resource.data.image
&& request.resource.data.link == resource.data.link
&& request.resource.data.format == resource.data.format
&& request.resource.data.type == resource.data.type
&& request.resource.data.user == resource.data.user
&& request.resource.data.views == resource.data.views
&& request.resource.data.reports == resource.data.reports
&& request.resource.data.roles == resource.data.roles
&& request.resource.data.category == resource.data.category
&& request.resource.data.votes == resource.data.votes
&& request.resource.data.cakes is int;
使用writeFields,完全相同规则如下所示:
allow update: if request.writeFields.hasOnly(['cakes']) && request.resource.data.cakes is int;
我可以做些什么来减少我的规则的代码大小/writeFields 的替代方法是什么?
限制
文档中提到了两个limits,使这个问题更加严重:
每个请求评估的最大表达式数:1,000
规则集的最大大小:64 KB
我希望在这个限制下在某个时候达到这两个目标。
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security