我正在尝试从军团集合中检索文档,其中docid是军团名称,但我想确保只有用户所在的军团是可检索的。
部落集合包含以部落名称作为 ID 的文档,以及成员的子集合,其中包含以用户电子邮件作为文档 ID 的文档。
氏族(收藏(=> 氏族名称(文档(=> 成员(收藏(=> 成员(文档(
如何检查军团以确保 request.auth.token.email 是成员子集合中的文档
我想我需要让成员等于 request.auth.token.email 但不确定在规则中的位置。
firebase
.firestore()
.collection("clans")
.doc(clanName)
.get()
.then(clan => {
this.clan = clan;
});
match /clans/{clanName} {
allow create;
allow read: if exists(/databases/clans/documents/{clanName}/members/{member});
}
成员子集合将包含多个文档,其中用户电子邮件作为 documentId。
您需要使用文档中描述的语法构建文档的正确路径(我建议仔细阅读(。 我建议使用用户的 UID,因为这是唯一标识帐户的最佳方式:
allow read: if exists(/databases/$(database)/documents/clans/{clanName}/members/$(request.auth.uid))
如果您必须使用电子邮件,我强烈建议您避免使用这些安全规则,因为以后可能会遇到问题:
allow read: if exists(/databases/$(database)/documents/clans/{clanName}/members/$(request.auth.token.email))