firebase - Firestore 规则 - 为什么在没有 OR 语句的情况下通过规则时在返回 false 的规则中添加 OR 语句?
问题描述
我有一个 Firestore 规则,直到我添加一个 OR 语句。不管右边是真是假,这不应该还是过去吗?
allow read: if exists(/databases/$(database)/documents/companies/$(company)/users/$(request.auth.uid))
|| hasRole(['Super', 'Manager', 'Tester']);
如果我省略 || hasRole(['Super', 'Manager', 'Tester']); 规则通过/允许数据访问。
这与功能有关还是我在 Firestore 规则中缺少 Or 语句?
function hasRole(roles) {
return get(/databases/$(database)/documents/companies/Seva%20Development/users/$(request.auth.uid)).data.roles.hasAny(roles);
}
company/company/users/userId 有许多字段,其中之一是角色。Roles 是一个字符串数组(例如:["Admin", "Manager", "Tester"])。
解决方案
我相信这是因为你没有正确使用你的变量hasRole
,data
应该在get
. hasRole
应该:
function hasRole(roles) {
return get(/databases/$(database)/documents/companies/$(company)/users/$(userId)).data.roles.hasAny(roles);
}
推荐阅读
- python - 列表索引超出范围,我该如何解决?
- python - 在 for 循环中使用 break 和 continue 来遍历字典
- javascript - 按时刻从字符串日期转换为 unix 时间戳
- eclipse - 尝试安装最黑暗的主题后如何在 Ubuntu 上修复 Eclipse?
- reactjs - 使用 Firestore 快照侦听器接收 React 中的聊天列表
- vue.js - 尝试动态创建配置屏幕输入到创建相同输入集的 V-For
- javascript - 除了这个
- python - paho.mqtt.python 无法传递用户名和密码
- latex - TexStudio - 我的引文出现奇怪的字符
- snowflake-cloud-data-platform - 将变量传递给雪花过程