Многоуровневый дочерний запрос Firebase для Android - PullRequest
0 голосов
/ 10 ноября 2018

Как я могу получить все чаты, где пользователи содержат определенный UID

 Query sItemQuery = mDatabase.getReference().child("chats").limitToLast(200);

        FirebaseRecyclerOptions<ChatMetaData> options =
                new FirebaseRecyclerOptions.Builder<ChatMetaData>()
                        .setQuery(sItemQuery, ChatMetaData.class)
                        .setLifecycleOwner(this)
                        .build();

This is my DB Structure

1 Ответ

0 голосов
/ 10 ноября 2018

Вы не можете делать запросы на нескольких уровнях. См. Запрос Firebase с двойным вложением

Таким образом, хотя ваша текущая структура данных позволяет легко находить текущих пользователей в чате, она не облегчает поиск текущих чатов для пользователя.

Для этого вам нужно будет добавить дополнительную структуру данных. Что-то вроде:

user_chats: {
  uid1: {
    chatid1: true,
    chatid2: true
  }
  uid2: {
    chatid2: true,
    chatid3: true
  }
}

С помощью этой дополнительной структуры вы можете легко найти чаты для текущего пользователя, прочитав /user_chats/$uid.

Также см .:

...