Firebase 如果我';我在检查数组?
我有一组邀请,但出现权限不足错误 数据 还有一个团队Firebase 如果我';我在检查数组?,firebase,google-cloud-firestore,nosql,firebase-security,Firebase,Google Cloud Firestore,Nosql,Firebase Security,我有一组邀请,但出现权限不足错误 数据 还有一个团队 "teamID" : { ... managers: [managerID, ...] ... } 请回答以下问题: 团队经理 这个问题似乎很直截了当 db.collections('invites').where('teamID', '==', myTeamID) 但是规则必须检查询问的人是否是经理 match /invites/{inviteID} { function isManager() {
"teamID" : {
...
managers: [managerID, ...]
...
}
请回答以下问题:
团队经理
这个问题似乎很直截了当
db.collections('invites').where('teamID', '==', myTeamID)
但是规则必须检查询问的人是否是经理
match /invites/{inviteID} {
function isManager() {
// managers is an array
return get(/databases/$(database)/documents/teams/$(resource.data.teamID)).data.managers.includes(request.auth.uid)
}
allow read: if (isManager())
}
我也有这条失败的规则,这有关系吗
// Allow user to read his own invites
match /invites/{inviteID} {
allow read: if (request.auth.token.email == resource.data.playerEmail)
}
与同一文档匹配的第二条规则将失败,因为显然邀请与经理的电子邮件不同。我需要这个规则作为一个单独的查询,允许用户查询他们的邀请
似乎没有阅读,我有权限问题。谢谢你的帮助 所以我把规则改为
return request.auth.uid in get(/databases/$(database)/documents/teams/$(resource.data.teamID)).data.managers
这似乎解决了我的权限错误
return request.auth.uid in get(/databases/$(database)/documents/teams/$(resource.data.teamID)).data.managers