Используя фактическую структуру базы данных, вы не можете получить все группы, в которые входит пользователь, если вы не внесете некоторые изменения в свою базу данных. В вашем случае вам следует рассмотреть возможность дополнения структуры базы данных, чтобы разрешить обратный поиск путем создания другого узла с именем groups
под каждым объектом пользователя, в который вы должны добавить все идентификаторы группы, из которых состоит пользователь. Таким образом, ваша структура базы данных должна выглядеть следующим образом:
Firebase-root
|
--- users
|
--- userId
|
--- groups
|
--- groupIdOne: true
|
--- groupIdTwo: true
Чтобы получить все группы, в которые входит пользователь, просто подключите прослушиватель к узлу groups
, и есть все группы, которые вам нужны.
Но вы будете думать, зачем это делать? Зачем дублировать данные? Что ж, нет проблем с дублированием данных, когда речь идет о Firebase. Это довольно распространенная практика, которая называется denormalization
, и для этого я рекомендую вам посмотреть это видео, Денормализация нормальная с базой данных Firebase .
Когда вы дублируете данные, нужно помнить одну вещь. Точно так же, как вы добавляете данные, вы должны поддерживать их. Другими словами, если вы хотите обновить / обнаружить элемент, вы должны делать это в каждом месте, где он существует.