我正在尝试通过搜索其子参数来返回Firebase中的UID键值。
-Users
-BCsuC4XAZq0MDK1taLcD2
-Name: Test1
-Phone: 0011223344
-t50GPKxb8mgINGbmGJrR83
-Name: Test2
-Phone: 9988776655
所以从上面的这个数据库中,我试图根据电话号码实现搜索功能,用户搜索" 9988776655"将得到" t50GPKxb8mgINGbmGJrR83"的返回值,但经过几个小时的搞乱我无法接近能够做到这一点。
这里有一篇帖子:
Query Firebase based on field and return parent in Android
看起来它会非常接近,但不幸的是没有提供完整的解决方案代码。在涉足它之后,我可以尝试将其融入我的场景中的最佳方法是空响应。
有谁知道我怎么能这样做?我已经阅读了几十个论坛帖子,并观看了几个youtube教程,但似乎没有人能够做到这一点。有可能吗?
答案 0 :(得分:4)
试试这个:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Users");
ref.orderByChild("Phone").equalTo(9988776655).addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot datas: dataSnapshot.getChildren()){
String keys=datas.getKey();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
使用上述内容,您将进入数据快照Users
,然后由于您要根据电话号码进行搜索,您可以执行此操作orderByChild("Phone").equalTo(9988776655)
,这将搜索等于的电话号码提供的价值。该值可以是您在其中添加的变量,也可以是字符串"9988776655"
。
然后为了能够获得随机ID,你需要在直接子节点内迭代,使用getKey()
你将能够检索到等于9988776655的手机的随机ID