Firestore 安全规则:使用array_contains确定授权
2022-09-03 17:10:25
我可以使用 Firebase 安全规则中的等效项吗?array_contains
我有一个类(对应于集合中的文档)。每个文档都有一个列表/数组,其中包含应该能够查询此事件的所有用户的 UID:Event
Event
events
subscribers
{
.
"subscribers" : ["uidA", "uidB", "uidC"],
.
}
更明确地说,用户应该能够运行查询:
db().collection("events").whereArrayContains("subscribers", "uidC");
如何编写此安全规则?
我试过了:
match/events/{eventId} {
allow list: if request.auth.uid in resource.data.subscribers;
}
模拟器告诉我访问将被拒绝。
使用此类函数还会报告访问被拒绝:
function isSubscriber() {
return resource.data.subscribers.includes(request.auth.uid);
}
match/events/{eventId} {
allow list: if isSubscriber();
}