Как создать схему Firestore для музыкального приложения? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть база данных Cloud Firestore для музыки:

ROOT
 |
 +-- shops {collection}
      |
      +-- countryName {document}
             |
             +-- cityName {collection}
                   |
                   +-- shopIdOne {document}
                         |
                         +-- dvds {collection}
                              |
                              +-- dvdIdOne {document}
                              |     |
                              |     +-- name: "Led Zeppelin: Live in Seattle 1977"
                              |
                              +-- dvdIdTwo {document}
                                    |
                                    +-- name: "Queen: Live at AID 1985"

Используя эту схему, я могу получить все музыкальные DVD-диски из магазина в существующем городе, и это нормально. Проблема в том, что один и тот же DVD может существовать как минимум в 5 магазинах в разных городах.

Я знаю, что не могу запрашивать несколько коллекций, поэтому вопрос в том, как создать схему, чтобы я мог запрашивать базу данных по имени DVD и получать все магазины, где она существует?

1 Ответ

1 голос
/ 21 марта 2019

Обновление: по состоянию на май 2019 года Cloud Firestore теперь поддерживает запросы групп сбора .

С помощью запроса группы сбора вы можете запросить все dvdsКоллекции во всех магазинах:

db.collectionGroup('dvds').where('name', '==', 'Led Zeppelin: Live in Seattle 1977')

Оригинальный ответ

Если вы хотите найти магазины с определенным DVD, вам нужно будет хранитьТочная информация в базе данных тоже.Итак:

ROOT
 |
 +-- DVDs {collection}
      |
      +-- dvdIdOne {document}
      |     |
      |     +-- name: "Led Zeppelin: Live in Seattle 1977"
      |      |
      |      +-- shops {collection}
      |            |
      |            +-- shopIdOne {document}
      |
      +-- dvdIdTwo {document}
            |
            +-- name: "Queen: Live at AID 1985"      |
             |
             +-- shops {collection}
                   |
                   +-- shopIdOne {document}

Либо так, либо вы можете подождать, пока запросы группы сбора станут доступными (хотя на данный момент временная шкала для этого не известна), и посмотреть, разрешить ли вариант использования для текущих данныхструктура.

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