Java 如何实时过滤具有复杂节点的Firebase数据库中的数据
现在,我试图通过“phoneNumber”搜索来查找特定的用户id,但他的Java 如何实时过滤具有复杂节点的Firebase数据库中的数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,现在,我试图通过“phoneNumber”搜索来查找特定的用户id,但他的phoneNumber位于特定节点,因此很难找到,或者我不知道如何找到它。我想获取此信息节点的快照 数据库结构 我试图通过如下查询进行搜索: Query q=FirebaseDatabase.getInstance().getReference("Users") .orderByChild("phoneNumber").equalTo("8@gmail.com");
phoneNumber
位于特定节点,因此很难找到,或者我不知道如何找到它。我想获取此信息节点的快照
数据库结构
我试图通过如下查询进行搜索:
Query q=FirebaseDatabase.getInstance().getReference("Users")
.orderByChild("phoneNumber").equalTo("8@gmail.com");
```
and also tried this one
```
Query q=FirebaseDatabase.getInstance().getReference("Info")
.orderByChild("phoneNumber").equalTo("8@gmail.com");
但也不起作用:(这些查询都不起作用,因为在第一次查询中,您缺少
信息
子项,而在第二次查询中,您缺少用户
子项。要解决此问题,请使用以下查询:
Query q = FirebaseDatabase.getInstance().getReference()
.child("Users")
.orderByChild("Info/phoneNumber")
.equalTo("8@gmail.com");
您需要做的第一件事是在您的firbase控制台规则中创建索引 像这样
{
/* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
"rules": {
".read" : true,
".write" : false,
"admin": {
".indexOn": "phone"
}
}
}
然后在文件中写下您试图通过电话号码获取数据的位置
Query q=FirebaseDatabase.getInstance().getReference("Users")
.orderByChild("phoneNumber").equalTo("phoneValue")->getValue();
请添加您的数据库结构。对不起,我忘了上传,谢谢@AlexMamo