firebase - Firebase Firestore 规则 get() 不工作
问题描述
我的大部分 Firestore 规则都有效。查找用户是否已签名并在许可下拥有文档。唯一的事情是,我想知道那个许可是什么。为此,我的功能
function UserClearance() {
return Number(
get(/databases/$(database)/documents/Clearance/$(request.auth.uid)).a ||
get(/databases/$(database)/documents/Clearance/$(request.auth.uid)).data.a
);
}
然后我将其与这样的数字进行比较
允许写:if UserClearance() > 1;
虽然我在这个功能上没有成功,但我想知道我是如何让它工作的。
解决方案
尝试这个。这个对我有用:
// helper functions
function clearance(database) {
return get(/databases/$(database)/documents/Clearance/$(request.auth.uid)).data.a > 1
}
// security rules
service cloud.firestore {
match /databases/{database}/documents {
match /Clearance {
allow read: if clearance(database);
}
}
}
确保database
在正确的范围内使用变量。
推荐阅读
- python - 如何将常规输出保存到管道变量
- intellij-idea - Intellij,Thymeleaf,在代码检查期间识别 instanceof
- android - 如何在android中实现我自己的备份代理
- python - 以非数字类型 pandas 为中心
- json - Angular:使用不同的对象键在视图中显示列表
- angular - 实施 Angular 8 Route (Auth) Guards 时出错
- python - 为沿 y 轴上升的点插值平滑路径
- push-notification - 在 XMPP 推送通知服务中使用 Ejabberd 作为 App Server
- python - 这里有重复“或”语句(python)的替代方法吗?
- java - 我如何获得自纪元以来经过的微秒长(时间),然后在 Java 8 中从同一时间获得月份和年份