检查数组中的引用 - Firestore 安全规则

Sre*_*dhe 5 firebase firebase-security google-cloud-firestore

我正在为我的应用程序构建 firestore 安全规则,并且在events集合中我有一个名为 的属性members,该属性具有集合中的引用数组users。我将如何确保发送请求的用户位于该集合中?我知道我能够获取 userId,request.auth.uid但我不知道如何获取 firestore 规则中的文档引用并确保该引用位于数组中。

Sre*_*dhe 7

我找到的答案是这样的:

match /events/{eventId} {
  allow read: if /databases/$(database)/documents/users/$(request.auth.uid) in resource.data.members;
}
Run Code Online (Sandbox Code Playgroud)

看起来in关键字允许我检查一个值是否在数组内,并/databases/$(database)/documents/users/$(request.auth.uid)创建一个 DocumentReference,它是存储在数组中的数据类型。