Cloud Firestore

Firestore Database — облачная NoSQL-база от Firebase. Она хранит данные приложения и через подписки держит их в актуальном состоянии на всех устройствах.

Что такое NoSQL

NoSQL-база не требует схемы: данные лежат не в таблицах, и жёстких ограничений на их форму нет. Firestore использует модель «коллекция — документ».

Три понятия:

  • Коллекция — набор документов.
  • Документ — запись, состоящая из полей.
  • Поля — пары «ключ — значение» внутри документа: имя, город, возраст.

Наглядно:

Модель «коллекция — документ»

Модель «коллекция — документ»

Данные каждого пользователя лежат в отдельном документе, документы собраны в коллекцию. Важная деталь: документы одной коллекции не обязаны иметь одинаковый набор полей. Добавили в новый документ поле с датой рождения или картинкой — старые документы править не нужно.


Структура базы

Разберём на примере: пользователи оставляют комментарии к постам. Структуру можно собрать двумя способами:

Корневые коллекции

Несколько коллекций создаются на верхнем уровне базы — скажем, «comments» и «posts». Все комментарии ко всем постам лежат в одной коллекции, а связь с постом хранится в отдельном поле-ссылке.

Корневые коллекции posts и comments

Корневые коллекции
совет
Когда так лучше

Когда вы часто ищете и фильтруете внутри одной коллекции, не заглядывая в другую. Например, нужно показать все комментарии сразу — независимо от постов, скажем самые залайканные.

Вложенные коллекции

Коллекция создаётся внутри документа — это и есть subcollection.

Скажем, в корне лежит коллекция «posts», а внутри её документов — коллекция «comments». Поле-ссылка тут не нужно: комментарий и так лежит внутри своего поста.

Вложенная коллекция comments внутри posts

Вложенные коллекции
совет
Когда так лучше

Когда запросы к одной коллекции почти всегда привязаны к документу другой. Например, вы загружаете и ищете комментарии конкретного поста.

инфо

Доступ к данным ограничивается правилами Firestore.


совет
Что ещё почитать

Другие NoSQL-решения на рынке — MongoDB, Cassandra и ElasticSearch.

Если удобнее посмотреть видео:

Несколько баз в одном проекте

В одном проекте Firebase можно держать несколько баз Firestore. Это пригодится, когда данные разнесены по регионам или когда у каждого клиента должно быть своё изолированное хранилище.

Так же разделяют окружения — разработку, тестирование, продакшн. Но учтите: с окружениями разработки во FlutterFlow это никак не связано. Переключая окружение, Firestore Database ID придётся менять руками.

Чтобы создать базу, откройте Firebase Console > Firestore Database и нажмите Add database рядом с базой по умолчанию. Выберите регион и настройте правила безопасности. Между базами потом переключаются через выпадающий список.

Дальше скопируйте новый Database ID, откройте FlutterFlow > Settings and Integrations > Firebase > Advanced Settings, вставьте его в поле Firestore Database ID и заново сгенерируйте файлы конфигурации. Приложение начнёт работать с новой базой.

перевод официальной документации FlutterFlow

обновлено

ESC