firebase - 如果我正在检查数组,我可以在 firebase 规则中使用包含吗?
问题描述
我有一组邀请,但出现权限不足错误。
数据
"inviteID" : {
playerEmail: 'jon@doe.com',
teamID: 'abcdefg'
}
和一个团队
"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
这似乎解决了我的权限错误
推荐阅读
- angular - 复制的 Angular 7 项目无法编译
- python - 如何获取列表中的项目,并将它们打印到新的 .txt 文档中的不同行
- python - how to remove specific char from array in python
- javascript - 在 JavaScript (XMLHttpRequest) 中发送带有正文的 GET 请求
- c# - 创建视图模型时如何传递对类实例的引用
- c# - Linq Query 使用 In 子句加入子查询
- jmeter - JMeter HTML 报告 - 命名为 HTTP 请求
-0, -1 -2 等等 - 为什么? - tensorflow - 如何在tensorflow中实现caffe反卷积填充?
- javascript - 在 html 中包含脚本的正确方法是什么
- jquery - 查找执行搜索时数据表中返回的行数