Преамбула : Не существует ОДНОГО и только ОДНОГО правильного подхода при Нет SQL моделировании данных
Ваш подход кажется верным, однако я бы предложил следующие адаптации:
«Справочные темы в пользователях для удобного поиска»:
Чтобы «справочные темы в пользователях для удобного поиска» вы могли продублировать список topics
в массиве в user
профиль. После этого вы сможете использовать array-contains
(и другие членство в массиве методы) для ваших запросов. (Однако обратите внимание на ограничение оператора in
).
Преимущество такого подхода: вам нужно запросить только один документ, чтобы получить все темы пользователя. Возможный недостаток: существует ограничение на размер документа (и для отдельного значения поля), которое составляет максимум 1 МБ (1 048 576 байт), см. do c.
Вы можете легко поддерживать в syn c массив topics
и вложенную коллекцию topics
, комбинируя пакетную запись и arrayUnion()
и arrayRemove()
методы .
Используйте идентификатор пользователя вместо электронной почты для do c Идентификаторы и правила безопасности:
Вместо использования электронной почты в качестве users
идентификатора документа коллекции и использования его в Правила безопасности, используйте идентификатор пользователя. См. Примеры в do c.