База данных Firebase в реальном времени - как получить родительское имя на основе значения одного из его ключей - PullRequest
0 голосов
/ 24 мая 2018

Структура выглядит следующим образом:

users
    |----username1
         |----uid:value
         username2
         |----uid:value

Я пытаюсь найти лучший способ получить значение имени пользователя на основе значения его uid,Это должно быть в коде Java (Android), пока я нашел следующий код:

Query uid = reference.child("users").orderByChild("uid").equalTo(uid);
uid.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot datas: dataSnapshot.getChildren()){
      String keys=datas.getKey();
      if (keys.equals(uid)) {
        // uid found
      } else {

      }
    }
  }
  @Override
  public void onCancelled(DatabaseError databaseError) {

  }
});

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Пожалуйста, добавьте следующий код в ваш файл:

    DatabaseReference users= FirebaseDatabase.getInstance().getReference().child("users");
    final Query userQuery = users.orderByChild("uid");

    userQuery.addChildEventListener(new ChildEventListener() {
     @Override
     public void onChildAdded(DataSnapshot dataSnapshot, String s) {

         map.clear();
        if(child.getkey().toString().equalsIgnoreCase(uid)){

        //Get the node from the datasnapshot
          String myParentNode = dataSnapshot.getKey();

          for (DataSnapshot child: dataSnapshot.getChildren())
          {
             String key = child.getKey().toString();
             String value = child.getValue().toString();
             map.put(key,value);
          }

          }
       }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            databaseError.toException();
        }
    });
0 голосов
/ 24 мая 2018

Попробуйте этот код и создайте класс модели для получения значения Uid

    DatabaseReference users= FirebaseDatabase.getInstance().getReference().child("users");
    users.orderByChild("uid").equalTo(uid).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for(DataSnapshot post:dataSnapshot.getChildren()){

                //Use a model class to fetch user id like below
                UIDDetails u=post.getValue(UIDDetails.class);
                String user_id=u.getUid();

                //Here all values will be equal to youy required uid if exists more than one 


            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...