This article表示“ [writeFields]现在已弃用”。此外,我找不到writeFields
的任何文档,甚至在文档中也没有将其列为Request
的一部分。
我与Cloud Firestore安全规则面对的问题是,验证仅修改特定字段需要大量条件。例如,如果我要验证文档的唯一修改值是Request
,则必须编写以下规则:
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
使此问题更严重:
每个请求计算的最大表达式数:1,000
最大规则集大小:64 KB
我希望在某种程度上能够达到这两个限制。
[不幸的是,您目前正在做的事目前是您的最佳选择。
Firebase规则小组正在努力改进语言,以使比较/区分地图类型对象变得更加容易,这将大大减少执行此类操作所需的表达式数量,但是没有时间表马上。请继续关注。