gpt4 book ai didi

firebase - 无法在 Firebase Firestore 安全规则中使用逻辑 OR 运算符 - 条件始终评估为 `false`

转载 作者:行者123 更新时间:2023-12-04 13:43:48 24 4
gpt4 key购买 nike

我想允许写入 /companies/{company}如果登录用户是管理员 该记录不存在。

我有以下安全规则:

service cloud.firestore {
match /databases/{database}/documents {
function isManager() {
return get(/databases/$(database)/documents/managers/$(request.auth.uid)).data.id == request.auth.uid;
}

function companyExists(company) {
return exists(/databases/$(database)/documents/companies/$(company));
}

match /{document=**} {
allow read, write: if false;
}

match /companies/{company} {
allow read: if resource.data.isActive == true || isManager();
allow write: if !companyExists(company) || isManager();
}
}
}

以下行有问题:
allow write: if !companyExists(company) || isManager();

此条件的计算结果始终为 false即使 !companyExists(company)函数计算结果为 true .

我敢肯定 companyExists(company)isManager()功能按预期工作,因为我一直在单独测试它们。

例如,如果我使用以下规则:
allow write: if !companyExists(company);

然后表达式计算为 true如果公司记录不存在。与 isManager() 相同功能。它返回 true如果登录用户的 ID 存在于 managers收藏。该问题仅在使用 || 时出现两个函数之间的运算符。

最佳答案

没有工作:

allow read: if request.auth.uid != null || if request.auth.uid == "VacOqosKJhPjxQaCf93wGVjc8Fy2"
它是这样工作的:
allow read: if request.auth.uid != null;
allow read: if request.auth.uid == "GePV7U9kDmfThLVXzks6nn2HgXn2";

关于firebase - 无法在 Firebase Firestore 安全规则中使用逻辑 OR 运算符 - 条件始终评估为 `false`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52553640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com