我想定义一个规则,该规则只允许用户更新自己的项目,而管理员仅更新所有项目。
因为uid_of_logged_in_administrator我应该能够同时更新items/item__1和items/item__2-这有效。
因为uid_of_logged_in_user应该允许我进行更新,items/item__1但不能进行更新items/item__2-这不是。
显然问题是我不知道规则中的数据类型[ Cloud Firestore引用 ]是什么。
我已经阅读了有关规则的文档,并尝试了不同的事情。
if request.auth.uid == resource.data.owner | false
if request.auth.uid == resource.data.owner.id | false
if request.auth.uid == resource.data.owner.__id__ | false
if resource.data.owner is string | false
if resource.data.owner is path | true
if resource.data.owner == path('users/uid_of_logged_in_user') | false
if request.auth.uid == resource.data.owner[6] | false
Run Code Online (Sandbox Code Playgroud)
因此,似乎resource.data.owner是路径。
但是,如何获取此参考的ID?
我创建此引用的原因之一是owner属性可以是一个框或一个用户。例如。{owner: '/users/uid_of_logged_in_user'},{owner: '/boxes/box__1'}
我当然可以只添加带有用户uid的属性作为项目的字符串,而不是作为引用。但是然后我需要为框或用户作为所有者拥有两个不同的属性。
service cloud.firestore {
match /databases/{database}/documents {
function isAdmin() …Run Code Online (Sandbox Code Playgroud)