小编Tro*_*nda的帖子

在Firestore规则中使用参考数据类型

我想定义一个规则,该规则只允许用户更新自己的项目,而管理员仅更新所有项目。

因为uid_of_logged_in_administrator我应该能够同时更新items/item__1items/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)

firebase firebase-security google-cloud-firestore

5
推荐指数
1
解决办法
1383
查看次数