firebase - 使用 auth.uid 的基于查询的规则不起作用
问题描述
我有以下结构:
events
-LEe7X118dkcH2JhJRe
description: "Testdescr"
eventTasks
participants
0zlwpSlCazNGjOyMi95h8awshrG2
lastLogin: 1528641494535
userKey: "0zlwpSlCazNGjOyMi95h8awshrG2"
username: "User1"
6LnYKxRu2SWUrxwIzId8dDpOrl02
lastLogin: 152856590172
userKey: "6LnYKxRu2SWUrxwIzId8dDpOrl02"
username: "User2"
我想查询用户参与的所有事件(如过滤器)。我的 Java 代码是:
mDatabaseReference = FirebaseDatabase.getInstance().getReference("event");
mDatabaseReference.orderByChild("participants/"+userId+"/userKey").equalTo(userId).addChildEventListener [...]
这就像一个魅力 - 我只收到正确的事件。
现在我想在服务器端创建基于查询的规则(https://firebase.google.com/docs/database/security/securing-data)。所以我创建了一个读取规则,例如:
".read": "query.orderByChild == 'participants/'+auth.uid+'/userKey' && query.equalTo == auth.uid"
问题:我无法保存该规则。Firebase 给了我错误:“无效的 == 表达式:与排序进行比较时,右操作数必须是排序或字符串文字。”。为什么不能将“query.orderByChild”与 auth.uid 结合使用?
我究竟做错了什么?
编辑:这是我的完整规则:
{
"rules": {
".write": true,
"event":{
".read": "query.orderByChild == 'participants/'+auth.uid+'/userKey' && query.equalTo == auth.uid"
}
}
}
解决方案
推荐阅读
- c# - 显示输入类型编号但模型属性字符串的剃刀视图的验证消息
- c++ - 如何创建和调用与其他函数同名的函数?
- node.js - 使用 SSL 和 Cloudflare 的 NodeJs 应用程序变慢
- excel - 尝试使用 if 语句来获取单元格中的 exordium right bij 文本
- java - 如何使用firebase将OTP发送到手机号SpringBoot?
- ubuntu - 与原生 Windows NPM/Yarn 处理相比,为什么 WSL 非常慢?
- javascript - 如何根据其值突出显示表格中的单元格
- python - 未检测到安装在同一文件夹中的依赖项?
- javafx - JavaFX 中的按键侦听器在按下按钮时发生变化
- java - java.net.SocketException:将服务从 Java 8 升级到 Java 11 时管道损坏(写入失败)