Получить конкретное значение из datasnapshot - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть база данных пользователей, где каждому пользователю присваивается случайный идентификатор.У каждого пользователя есть данные, которые я хочу получить его значение.Иногда мне нужен только один конкретный пользователь, а иногда мне нужны все данные пользователей.База данных выглядит следующим образом:

database
   |
   |__users
        |____uid1
              |_____dataKey1: value1
              |_____dataKey2: value2
              |_____dataKey3: value3

Если мне нужно только значение1 dataKey1, как его получить?В настоящее время мой код возвращает карту всех дочерних элементов uid1:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference ref= rootRef.child("users").child("uid1");
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                value= ds.getValue().toString();
                Log.d("TAG", values);


            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    imageNamesRef.addListenerForSingleValueEvent(eventListener);

в журнале, который я получаю:

TAG: value1
TAG: value2
TAG: value3

, но я хочу:

TAG: value1

Гдеотфильтровать нужные мне ключи?

1 Ответ

0 голосов
/ 18 декабря 2018

Попробуйте выполнить следующее:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref= rootRef.child("users").child("uid1");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
      String value = dataSnapshot.child("dataKey1").getValue().toString();
      Log.d("TAG", value);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
imageNamesRef.addListenerForSingleValueEvent(eventListener);

У вас есть доступ к дочернему элементу uid1, поэтому для получения значения dataKey1 цикл не требуется.

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