Как получить вложенный объект в базу данных firebase

Ну у нас проблема. Мы ничего не знаем о firebase, и у нас есть некоторые проблемы с попыткой получить некоторые FK (или ссылки на другие базы данных) в новой базе данных.

firebase

в поле пользователя я хочу получить ссылку на пользователей таблицы. Поэтому, когда я пытаюсь получить данные из таблицы Accounts и проверить идентификатор пользователя, я должен получить user_tracklist вместо того, чтобы делать 2 запроса.


person Dylan Gomes    schedule 27.10.2016    source источник


Ответы (2)


Вы можете сохранить узел tracklist внутри узла accounts/{accountId}/user, чтобы у вас было две копии узла tracklist, одна внутри конечной точки пользователя, а другая внутри конечной точки учетной записи.

Сохраните также accountId внутри конечной точки users, чтобы иметь возможность обновлять дубликаты trackinglist в конечной точке accounts/{accountId}/user/trackinglist, когда происходят некоторые изменения с объектом trackinglist.

person Vladimir Gabrielyan    schedule 27.10.2016
comment
Ну, это проблема, я не хочу хранить данные дважды. Мне просто нужен ссылочный ключ в учетных записях моей таблицы, который ссылается на пользователей моей таблицы. Хранение данных дважды приведет к большому количеству данных, когда они станут больше. Мне просто интересно, могу ли я получить ссылку в этой области - person Dylan Gomes; 27.10.2016
comment
в этом случае вам нужно сделать второй запрос к users, нет возможности сохранить какую-либо ссылку, которая даст вам tracklists, единственными вариантами являются дублирование против «выполнить два запроса». Лично я бы предпочел дублировать, потому что если у вас будет много данных, это может привести к проблемам с производительностью, вам нужно использовать дубликаты, базы данных nosql для этой цели, здесь у нас нет объединений, внешних ключей, как у нас было в базах данных sql . - person Vladimir Gabrielyan; 27.10.2016

Пожалуйста, выйди из relational DB мира. firebase-database не имеет понятия о предложениях JOIN,WHERE. Он работает по концепции JSON Objects .

Иметь ввиду:

  1. Firebase предлагает максимально денормализировать ваши данные. Она любит дублирование данных

    Ссылка: Денормализация ваших данных — это нормально

  2. Firebase использует Sockets, вы установили соединение один раз, а затем направляете свои запросы (принесите мне учетную запись(и), теперь приведите мне пользователя этой учетной записи и бла-бла-бла). Так что не беспокойтесь о том, чтобы сделать несколько запросов, если вам нужно.

Обратитесь к этому вопросу SO

В вашей структуре данных вы пытались сгладить/денормализировать свои данные, но

Измените это:

user:"{deftones:true}"

To:

-user
   -deftones:true

и чтобы понять, как вы можете получить справочные данные, вы должны посмотреть статью, о которой я упоминал выше.

person Zaid Mirza    schedule 27.10.2016