我在Android中有一个Firebase数据库,我有根“USERS”,并且有多个用户将密钥作为电子邮件ID。
因此,数据库的模式就是这样,数据库使用电子邮件ID作为每个用户的主键:
{
"USERS":
{ "ABC@GMAIL,COM" :
{ "USERNAME": "abc",
"URL": "SOME_URL",...
}
}
{ "DEF@GMAIL,COM" :
{ "USERNAME": "dfe",
"URL": "SOME_URL2",...
}
}
.......
.......
.......
}
现在,电子邮件ID是每个用户的主键。在电子邮件ID内部是我想要的用户名密钥是进行查询。我想检查用户名是否存在? 所以通常的方法是使用数据库参考 - 像这样 -
DatabaseReference mDBRef = FirebaseDatabase.getInstance().getReference("/USERS/" + ???? + "/USERNAME");
然后在数据库引用上添加值事件侦听器。在dataSnapshot中检查它是否存在 -
dataSnapshot.exists()
现在我不知道在“USERS”之后要追加什么。此外,我希望数据库查询搜索用户名尽可能高效。什么是迭代电子邮件ID并检查email-id的子键是否存在的可能方法?
答案 0 :(得分:0)
您可以使用orderByChild()函数
过滤结果databasereference.orderByChild("USERNAME").equal("whatever")
为了在firebase数据库规则中获得完整的性能添加.indexOn属性
rules{
//other rules
"USERS":{
".indexOn":["USERNAME"]
}
}