извлекать данные из базы данных, имеющих случайно сгенерированный ключ - PullRequest
0 голосов
/ 18 апреля 2020

Ниже приведен код, который я использую для сохранения значения в базе данных. Он генерирует случайный ключ для каждого значения. (Я хочу сохранить избыточные данные, поэтому этот метод был необходим).

GenderOfNameHelperClass GONHC = new GenderOfNameHelperClass();
reference = FirebaseDatabase.getInstance().getReference().child("GenderOfName");
GONHC.setName(Name);
GONHC.setGender(Gender);
reference.push().setValue(GONHC);

Это создает структуру, как показано ниже:

db-ai-34201
-...GenderOfName
    -...M4oLyB1ADGLWGJG4EgR
        ...gender:"Female"
        ...name: "akira"

Сейчас Как я могу получить данные из этого. Я хочу получить пол, когда имя ищется из моего android пользовательского интерфейса.

1 Ответ

2 голосов
/ 18 апреля 2020

Это прослушиватель узла GenderOfName для извлечения данных под случайными ключами:

ValueEventListener listener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
       for(DataSnapshot snapShot:dataSnapshot.getChildren() ){
       //these are the values of gender and name for every random key
       //in GenderOfName node

           String gender = snapShot.child("gender").getValue(String.class);
           String name = snapShot.child("name").getValue(String.class);              
       }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException(); // never ignore errors
    }
};

Наконец, присоедините прослушиватель к вашей ссылке на этот узел, чтобы начать слушать его

reference = FirebaseDatabase.getInstance().getReference().child("GenderOfName");
reference.addValueEventListener(listener);

ОБНОВЛЕНИЕ

Вы всегда можете использовать запрос для фильтрации результатов:

вместо этого:

reference = FirebaseDatabase.getInstance().getReference().child("GenderOfName");
reference.addValueEventListener(listener);

попробуйте, это даст Вы задаете c снимок на основе нужного имени:

Query query = FirebaseDatabase.getInstance().getReference().child("GenderOfName").orderByChild("name").equalTo(theNameYouWant);
query.addValueEventListener(listener);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...