Как я могу перебирать таблицу Firebase, если она содержит данные от большего количества пользователей, прошедших проверку подлинности приложения? - PullRequest
0 голосов
/ 06 мая 2020

Я разрабатываю приложение для путешествий Android, и идея состоит в том, что пользователь может пройти аутентификацию и создать личную учетную запись через Firebase Authentication. Одна из функций говорит, что каждый пользователь может оставлять отзывы. Теперь я хочу получить все отзывы из базы данных Firebase Realtime (а не только текущие отзывы пользователей, все они). Как мне этого добиться?

enter image description here

1 Ответ

1 голос
/ 06 мая 2020

Чтобы получить все отзывы, которые соответствуют всем пользователям, вам нужно повторить итерацию дважды, как в следующих строках кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference reviewsRef = rootRef.child("reviews");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot uidSnapshot : dataSnapshot.getChildren()) {
            for(DataSnapshot reviewSnapshot : uidSnapshot.getChildren()) {
                String comment = reviewSnapshot.child("comment").getValue(String.class);
                Log.d("TAG", comment);
            }
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
    }
};
reviewsRef.addListenerForSingleValueEvent(valueEventListener);

Результатом logcat будет:

Really nice place
The ideal place for holiday. No matter if it
Hi

Если вы используете класс POJO для своего объекта обзора, используйте:

Review review = reviewSnapshot.getValue(Review.class);
Log.d("TAG", review.getComment());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...