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

Я работаю над приложением Android.Я хочу, чтобы первый дочерний (первый UID) родительской «поддержки» и сохранить его в переменной String.Как я могу получить значение первого UID из списка?Я попробовал один подход.Это не работает, хотя.

@Override
public void onDataChange(DataSnapshot dataSnapshot1) {
    if (dataSnapshot1.exists()) {
        String futureUID = "";
        for(DataSnapshot futureUIDdatasnapshot:dataSnapshot1.getChildren() ){
            futureUID = futureUIDdatasnapshot.getKey();
            break;
        }
        /*Getting the first UID from the list of UID's in queue in 'future'*/
        futureUID = dataSnapshot1.getChildren().iterator().next().getKey();
        /*Moving a card from 'future' to 'serving'*/
        societyServiceUIDReference.child(FIREBASE_CHILD_SERVING).child(futureUID).setValue(FIREBASE_ACCEPTED);
        /*Removing the UID from 'future' after it is placed in 'serving'*/
        societyServiceUIDReference.child(FIREBASE_CHILD_FUTURE).child(futureUID).removeValue();
    }

}

@Override
public void onCancelled(DatabaseError databaseError) {

}

ПРИМЕЧАНИЕ: «futureUID» - это UID, который я хочу

Firebase structure

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Попробуйте

DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();

.orderByKey (). LimitToFirst (n) - вот что делает трюк.Он упорядочивает результаты запроса по ключу и возвращает только первые n результатов;в этом случае 1

mDatabase.getChild("support").orderByKey().limitToFirst(1)
.addListenerForSingleValueEvent(new ValueEventListener () {

      @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
          if(dataSnapshot.exists()){
              for (DataSnapshot supportItem: dataSnapshot.getChildren()) {
              String futureUID =supportItem.getKey();
            }
        }

    }

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
         //Catch your error here
    }
});

см. Работа со списками данных на Android

0 голосов
/ 17 сентября 2018

Попробуйте следующее:

DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("support");
Query queryUid=ref.orderByKey().limitToFirst(1);
queryUid.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot datas : dataSnapshot.getChildren()) {
        String key=datas.getKey();
            }
        }

 @Override
public void onCancelled(DatabaseError databaseError) {

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