У меня проблема с получением данных из базы данных firebase. Мне нужно собрать данные и добавить их в массив только в том случае, если в поддокументе участника присутствует текущий идентификатор пользователя.
см. Структуру базы данных:
, и вот код, который я пытаюсь использовать для разрешения.
private DatabaseReference mDB = FirebaseDatabase.getInstance().getReference().child("events");
private FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
private String userid = user.getUid();
mDB.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
try{
for (DataSnapshot chidSnap : dataSnapshot.getChildren()) {
for(DataSnapshot participant : chidSnap.child("participants").getChildren()){
String participantKey = participant.getKey();
Log.d(TAG, "onDataChange: " + participantKey);
String participantId = (String) participant.child(participantKey).getValue();
Log.d(TAG, "onDataChange: " + participantId);
if(participantId.equals(userid)){
mEventKeys.add(chidSnap.getKey()); //displays the key for the node
mEventNames.add((String) chidSnap.child("event_name").getValue());
mEventShortDescriptions.add((String) chidSnap.child("event_name").getValue());
mEventLongDescriptions.add((String) chidSnap.child("event_name").getValue());
mEventCityLocations.add((String) chidSnap.child("event_name").getValue());
mEventDates.add((String) chidSnap.child("event_name").getValue());
mEventHours.add((String) chidSnap.child("event_name").getValue());
}
}
}
}catch (Exception e){
Log.d(TAG, "onDataChange: " + e.toString());
}
initRecyclerView(recyclerView);
}
Я пытаюсь получить ключ от одного участника (и я успешно могу это сделать), а затем вставить загруженный ключ, чтобы запросить значение для ключа. Когда я пытаюсь получить значение для конкретного ключа, я получаю значение Null.
Можете ли вы, ребята, помочь?
А также, если у вас есть предложения о том, как мне улучшить загрузку данных с базы данных, я бы очень хотел их увидеть! У меня сложилось впечатление, что мой подход не самый оптимальный.