对于每个文档,我都有一组允许访问该文档的管理员。数组中的所有项目都是与此相似的对象:
[
{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 Rules中,这似乎不是一个选择。我该如何解决?我是否必须创建另一个仅存储每个文档的管理员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"
}
}
规则保持不变
包含您可以使用的所有功能的参考在这里
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句