Php 在Firebase中使用带嵌套键的.indexOn
我正在使用Firebase PHP SDK,并试图找到一种在嵌套键userId上使用.indexOn Firebase规则的方法,我想知道为什么我还没有正确使用它。提前谢谢 我有一个名为“conversations”的表,第一级嵌套是用户id,第二级嵌套是键Php 在Firebase中使用带嵌套键的.indexOn,php,firebase-realtime-database,firebase-security,Php,Firebase Realtime Database,Firebase Security,我正在使用Firebase PHP SDK,并试图找到一种在嵌套键userId上使用.indexOn Firebase规则的方法,我想知道为什么我还没有正确使用它。提前谢谢 我有一个名为“conversations”的表,第一级嵌套是用户id,第二级嵌套是键 conversations -->user1 -->key1 -->userId -->key2 -->userId -->user2 -->key1
conversations
-->user1
-->key1
-->userId
-->key2
-->userId
-->user2
-->key1
-->userId
-->key2
-->userId
以下是添加的Firebase规则
{
“规则”:{
“.read”:“auth!=null”,
“.write”:“auth!=null”,
“对话”:{
“.indexOn”:[“用户/密钥/用户ID”]
}
}
}
在PHP级别,我尝试检索数据,但失败了
$reference = $database->getReference('conversations/'.$request['userId'].'/')
->orderByChild('userId')
->equalTo('ABCD')
->getValue();
索引需要在运行查询的JSON级别上定义。由于您在
/conversations/$uid
上运行查询,因此也需要在这里定义索引
因此:
注意,我还更新了索引内容,以与传递到orderByChild
中的值相匹配
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"conversations": {
"$uid": {
".indexOn": ["userId"]
}
}
}
}