Android Firebase获得其他用户';来自实时数据库的uid

Android Firebase获得其他用户';来自实时数据库的uid,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,有没有办法从实时数据库中获取另一个用户的uid?我想从数据库中同时获得两个具有不同UID的名称对象 Json文件: "Users" : { "PnZdR1Ily5R5R58FYFVEuWN0Q855" : { "-Kwwceeevvvvvttvv" : { "name" : "abc" }, "-Kccrr325gdfgdfFg" : { "name" : "abc" } }, "MeTsW4SsW6e8hG

有没有办法从实时数据库中获取另一个用户的uid?我想从数据库中同时获得两个具有不同UID的名称对象

Json文件:

"Users" : {
  "PnZdR1Ily5R5R58FYFVEuWN0Q855" : {
     "-Kwwceeevvvvvttvv" : {
      "name" : "abc"
      }, 
     "-Kccrr325gdfgdfFg" : {
      "name" : "abc"
      }
    }, 
  "MeTsW4SsW6e8hGrsFfVUuNNaQ3cj" : {
     "-Kfvr345345354555" : {
      "name" : "zxc"
      }, 
     "-Kbfhf56464646646" : {
      "name" : "zxc"
      }
  }
}
这是我的代码:

ValueEventListener postListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                User details = dataSnapshot.getValue(User.class);
                mName = details.name;
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.w(TAG, "getUser:onCancelled", databaseError.toException());
            }
        };
mDatabase.child("Users").child($uid).addValueEventListener(postListener);

这是我一直关注的部分,如何同时获取两个UID?

如果要检索随机键,则应使用
addChildEventValueListener
,因为它会逐个提供用户节点的子节点

 FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
 DatabaseReference mref = firebaseDatabase.getReference();
 mref.child("Users").addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
              if (dataSnapshot.hasChildren()) {
                  User details = dataSnapshot.getValue(User.class);
              }

        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

我很难理解你的问题。你能展示一些实际的JSON(作为文本,你可以从Firebase控制台导出)和显示你正在尝试做什么(以及你被困在哪里)的代码吗?@FrankvanPuffelen谢谢你的回答,我已经更新了这个问题。你似乎在寻找一个类似于SQLs
的查询,id在[id1,id2]
中。Firebase没有这样的机制,因此您必须依次加载每个子项。这并不比在sql查询中加载它们慢很多,因为。谢谢回复。也许我还不够清楚,很抱歉,我已经更新了json文件,应该是这样的,一个uid获得了不同的唯一密钥。这是一个正确的答案,但不是完整的答案:使用此代码,而不是像您那样使用
ValueEventListener
。但是使用
limitToFirst(2)
更新您的
ref
,以仅获取两个不同的uid。您还应该向查询引用添加更多参数。@AmiHollander感谢您的回复,但它不起作用,我仍然需要两个子项($uid)来获取由唯一键指定的数据。