Firebase搜索子级并返回父级密钥

时间:2018-02-21 12:04:22

标签: java android firebase firebase-realtime-database

我正在尝试通过搜索其子参数来返回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教程,但似乎没有人能够做到这一点。有可能吗?

1 个答案:

答案 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