Присоединение свойства из другого ключа в Firebase - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть база данных, определенная следующим образом enter image description here

Я могу получить cafeList следующим образом:

 ApiManager.getInstance().mainDB.child(CafeModel.DATASET_NAME)
                .orderByChild("name").startAt(searchText)
                .endAt(searchText + "\uf8ff")
                .addValueEventListener(new ValueEventListener()

Однако я не уверен, какмогу ли я прикрепить тот факт, что конкретное кафе также установлено моим пользователем как любимое.

1 Ответ

0 голосов
/ 30 сентября 2018

К сожалению, в Firebase нет способа достичь этого, используя только один запрос.Таким образом, в вашем случае вам следует запросить базу данных дважды, один раз, чтобы получить список кафе, и второй, чтобы проверить, является ли один из этих объектов кафе любимым или нет.Однако есть обходной путь, в котором вы можете создать новый раздел в вашем пользовательском объекте с именем favoriteCafe, в который вы можете добавить все любимые кафе пользователя, но это подразумевает дублирование данных.Эта практика называется denormalization и является обычной практикой, когда дело доходит до Firebase.Для лучшего понимания, я рекомендую вам посмотреть это видео, Денормализация нормальная с базой данных Firebase .Так что в этом случае, если вы хотите узнать любимые кафе пользователя, вы можете использовать один запрос и присоединить слушателя к этому новому созданному местоположению.

Кроме того, когда вы дублируете данные, есть одна вещь, которая требуетиметь в виду.Точно так же, как вы добавляете данные, вы должны поддерживать их.Другими словами, если вы хотите обновить / обнаружить элемент, вы должны делать это в каждом месте, где он существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...