如何解决Firebase Firestore,您可以为一个集合设置多个更新规则吗?
我继承了一个项目,尝试更新特定集合的属性时遇到权限问题。
查看已设置的Firestore规则,它列出了多个update
规则,我想知道是否允许这样做?我尝试在Firebase中使用规则操场,但遇到一个错误,告诉我其中一个规则name
属性未定义,这是正确的,因为我没有更新{ {1}}属性。然后Firebase会跳过该规则并转到下一个规则以查看它是否适用?
作为参考,这是集合的规则;
name
我正在尝试像这样更新match /teams/{id} {
allow read: if request.auth.uid != null
&& request.auth.uid in resource.data.members;
allow read: if isAdmin();
allow create: if true;
allow update: if request.auth.uid != null
&& request.resource.data.keys().hasOnly(['name','owners','members'])
&& request.resource.data.name is string
&& request.resource.data.name.size() >= 1
// ToDo: Validate values in list
&& request.resource.data.owners is list
&& request.resource.data.owners.size() >= 1
// ToDo: Validate values in list
&& request.resource.data.members is list
&& request.resource.data.members.size() >= 1
&& request.auth.uid in resource.data.owners;
allow update: if request.auth.uid != null
&& request.resource.data.keys().hasOnly(['name','members'])
&& request.resource.data.name == resource.data.name
&& request.resource.data.owners == resource.data.owners
// ToDo: Validate values in list
&& request.resource.data.members is list
&& request.resource.data.members.hasAll(resource.data.members)
&& exists(path('/databases/' + database + '/documents/subinvites/' + request.auth.uid + id));
allow update: if isAdmin();
}
集合上的members
属性;
team
但是,看看上面的规则和代码,这肯定不会起作用,因为两个更新角色似乎都要求请求包含Firebase.firestore()
.collection("teams")
.doc(teamId)
.update({
members: Firebase.firestore.FieldValue.arrayUnion(userId),});
,name
和{{1} },而请求仅通过owners
。这也意味着如果members
属性为{p> 1,则条件members
不可能为真
解决方法
它列出了多个更新规则,我想知道是否允许这样做?
是的,对于一个特定的访问方法,您可以有多个规则。
Firebase会跳过该规则并转到下一个规则以查看是否适用吗?
不跳过任何规则。如果您有多个规则,它将计算每个规则的逻辑或。因此,如果规则的任何允许更新,则将授予该访问权限。
如果name属性,则条件
request.resource.data.name == resource.data.name
不可能为真
不一定。如果文档在更新之前具有name
字段,则此处将具有该值。 request.resource.data
包含要写入的新文档的 entire 内容,而不仅仅是更新中指定的字段。但是,如果该字段不存在,并且您没有在更新中提供该字段,那么规则将拒绝该更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。