我在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的子键是否存在的可能方法?
1 回答
您可以使用orderByChild()函数过滤结果
为了获得完整的性能,请在firebase数据库规则中添加.indexOn属性