Javascript 我可以在Firestore规则中创建地图吗?

Javascript 我可以在Firestore规则中创建地图吗?,javascript,firebase,google-cloud-firestore,firebase-security,Javascript,Firebase,Google Cloud Firestore,Firebase Security,对于每个文档,我都有一组允许访问该文档的管理员。数组中的项目都是与此类似的对象: [ {user_ID : "Wfdwwwrdfsdfsdf", avatar: "www.dfsfsd.com/dfdfd" name: "Ben Ben" }, {user_ID : "Hdfsdbbf", avatar: "www.dfsfsd.com/popo" name: "Josh Josh" } ] 在我的Firestore规则中,我想检

对于每个文档,我都有一组允许访问该文档的管理员。数组中的项目都是与此类似的对象:

[
    {user_ID : "Wfdwwwrdfsdfsdf",
    avatar: "www.dfsfsd.com/dfdfd"
    name: "Ben Ben"
    },
    {user_ID : "Hdfsdbbf",
    avatar: "www.dfsfsd.com/popo"
    name: "Josh Josh"
    }
]
在我的Firestore规则中,我想检查发出请求的用户是否是管理员,因此我需要检查他们的uid是否是该数组的一部分。在JS中,我只需要使用映射从阵列管理员创建一个只包含ID的新阵列,并检查ID是否存在。在Firestore规则中,这似乎不是一个选项。我怎样才能避开这件事? 我是否必须创建另一个仅存储每个文档的管理员ID的数组?这似乎太过分了。
无法找到使用Firestore时可以使用的所有方法和函数。我所找到的只是某些操作的示例。

规则中没有循环的方法,因此您无法遍历对象并创建ID数组。预先计算此管理员数组似乎是最好的选择

 allow update: if request.auth.uid in resource.data.admins
另一个选项是将管理员数组转换为以uid为键的映射。那么你就不需要复制钥匙了

{
    Wfdwwwrdfsdfsdf : {
        avatar: "www.dfsfsd.com/dfdfd"
        name: "Ben Ben"
    },
    Hdfsdbbf: {
        avatar: "www.dfsfsd.com/popo"
        name: "Josh Josh"
    }
}
规则不变

包含您可以使用的所有函数的引用是