Справочник команд Firebase CLI для подключения к данным

Firebase CLI — это инструмент, позволяющий управлять продуктами и сервисами Firebase и настраивать их из командной строки.

Интерфейс командной строки предоставляет команды, которые можно использовать для выполнения различных задач Data Connect , таких как создание нового проекта Data Connect , инициализация соответствующего локального рабочего каталога, настройка эмулятора Data Connect , перечисление ресурсов Data Connect , генерация клиентских SDK и многое другое.

Команды настройки

Добавить Data Connect в проект Firebase

firebase init

Используйте firebase init для настройки новой локальной конфигурации проекта. Этот рабочий процесс создает или обновляет файлы конфигурации Firebase в вашем каталоге.

firebase init

Процесс firebase init проведет вас через настройку сервиса и базы данных, а также, при необходимости, установит эмулятор Data Connect и настроит сгенерированные SDK.

Настройка сервиса и базы данных

Если вы выберете dataconnect для настройки продукта, интерфейс командной строки запросит у вас новое имя и местоположение службы, а также укажет, следует ли связать существующий экземпляр Cloud SQL for PostgreSQL или создать новый экземпляр.

Если уже подключен существующий экземпляр, интерфейс командной строки проверяет совместимость настроек, таких как аутентификация IAM и публичные IP-адреса.

Настройка Local Emulator Suite

Интерфейс командной строки предлагает настроить эмуляторы, в том числе эмулятор Data Connect .

Команды эмулятора Data Connect

Запустите эмулятор Data Connect

эмуляторы: запуск/исполнение

firebase emulators:start/exec

Используйте версию эмулятора Data Connect из Local Emulator Suite в интерактивном режиме с помощью start или в неинтерактивном режиме с использованием скрипта с помощью exec .

Экспорт и импорт локальных данных PostgreSQL

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

Экспортированные данные сохраняются в виде снимков вашей локальной базы данных PostgreSQL.

Data Connect предлагает три способа экспорта/импорта:

  • В файле firebase.json настроен автоматический экспорт/импорт для создания резервных копий в режиме реального времени при выключении и запуске эмулятора.
  • Экспорт/импорт вручную с использованием интерфейса командной строки.
  • Ручной экспорт/импорт с использованием интерфейса расширения VS Code.

Автоматический экспорт и импорт настраиваются в вашем firebase.json

Для резервного копирования данных между сеансами разработки укажите место автоматического сохранения резервных копий во время инициализации firebase init . Это местоположение хранится в вашем firebase.json в поле emulators.dataconnect.dataDir . Любые изменения данных будут автоматически сохраняться здесь между запусками эмулятора, поэтому это полезно во время локального тестирования и исследования.

Экспорт вручную: emulators:export и emulators:start/exec --import

Пока эмулятор Data Connect запущен, в отдельном терминале выполните команду firebase emulators:export , чтобы сохранить снимок ваших данных. Затем вы можете запустить эмулятор из этого снимка, используя флаг --import .

# Export data from local emulator from a separate terminal
firebase emulators:export --only dataconnect <export_directory>

# Import data from local directory, here using emulators:exec
firebase emulators:exec ./<your-test-script>.sh --only dataconnect --import <import_directory>

Ручной экспорт/импорт: расширение VS Code

В пользовательском интерфейсе расширения VS Code, во время работы эмулятора, используйте кнопку «Экспорт данных эмулятора» , чтобы экспортировать данные и содержимое текущей базы данных. Место экспорта по умолчанию — каталог exportedData в корневом каталоге вашего проекта.

Вы можете импортировать эти данные с помощью командной строки, как описано в предыдущем разделе. Вы также можете импортировать эти данные перед запуском эмулятора через VS Code, щелкнув ссылку «Настроить эмулятор» и указав путь импорта .

Команды управления схемой и коннектором

В этом разделе представлена ​​справочная информация по командам командной строки, используемым для управления схемами и коннекторами.

Инструкции по использованию и рекомендуемые методы работы с этими командами см. в руководстве по управлению схемами и коннекторами .

Разверните схемы и коннекторы.

развертывать

firebase deploy

Эта команда развертывает ресурсы для служб Data Connect, проиндексированных в файле firebase.json . При необходимости выполняется миграция схемы и обновление коннектора .

Командование Описание

firebase deploy

Флаг Описание

–-только подключение данных

Разверните схемы и коннекторы для всех сервисов Data Connect для этого проекта, но не развертывайте ресурсы других продуктов Firebase.

–-only dataconnect:serviceId

Разверните схему и коннекторы для указанной службы Data Connect.

–-only dataconnect:serviceId:connectorId

Разверните единый коннектор для указанной службы Data Connect.

–-only dataconnect:serviceId:schema

Разверните схему для указанной службы Data Connect.

С помощью флагов –-only вы можете передавать значения, разделенные запятыми, для развертывания любого подмножества ресурсов по вашему желанию.

firebase deploy --only dataconnect:service1:schema,dataconnect:service2

Список служб, схем и коннекторов Data Connect

dataconnect:services:list

firebase dataconnect:services:list

Эта команда выводит основную информацию о сервисах, схемах и коннекторах, развернутых в проекте.

Сравнение и миграция схем SQL

При выполнении firebase deploy интерфейс командной строки выполняет сравнение схем SQL перед развертыванием обновлений. Вы также можете выполнить сравнение и обновление напрямую с помощью набора команд ` dataconnect:sql .

dataconnect:sql:diff

firebase dataconnect:sql:diff

Эта команда сравнивает локальную схему сервиса с текущей схемой соответствующей базы данных Cloud SQL. Она выводит команды, которые будут выполнены для миграции базы данных в новую схему.

Командование Описание

firebase dataconnect:sql:diff

Флаг/Параметр Описание

serviceId

Укажите сервис. Если не указано, выведите разницу для всех сервисов в файле firebase.json.

dataconnect:sql:migrate

firebase dataconnect:sql:migrate

Эта команда применяет локальные изменения схемы к базе данных Cloud SQL сервиса.

При настройке нового локального проекта Data Connect с использованием файла dataconnect.yaml по умолчанию команда dataconnect:sql:migrate запрашивает у вас необходимые изменения, а затем — необязательные, прежде чем выполнить их. Вы можете изменить это поведение, чтобы всегда включать или игнорировать необязательные изменения, обновив конфигурацию файла dataconnect.yaml , как описано в разделе «Миграция схемы в строгом или совместимом режиме».

В интерактивных средах CLI отображает каждое SQL-запрос на миграцию (и указывает, является ли он деструктивным) и запрашивает подтверждение изменений, которые вы хотите применить. Передача флага --force эквивалентна принятию всех запросов.

В неинтерактивных средах:

  • Без --force вносятся только неразрушающие изменения. Если происходят разрушительные изменения, работа CLI прерывается без внесения каких-либо изменений.
  • При использовании --force вносятся все изменения. Если это включает в себя какие-либо необратимые изменения, они выводятся на экран, и вам предлагается продолжить, если только не указан флаг --force .
Командование Описание

firebase dataconnect:sql:migrate

Флаг Описание

serviceId

Перенесите базу данных для указанного сервиса. Идентификатор сервиса определяется автоматически, если в вашем проекте только один сервис.

--сила

Автоматически принимать запросы.

Как и в случае с другими флагами --only , вы можете указать несколько услуг, разделенных запятыми.

Миграция схемы в строгом или совместимом режиме.

В миграции схем Data Connect используются два разных режима проверки схемы: строгий и совместимый . Строгий режим проверки требует, чтобы схема базы данных точно соответствовала схеме приложения до развертывания схемы приложения. Совместимый режим проверки требует, чтобы схема базы данных была совместима со схемой приложения, то есть элементы в вашей базе данных, которые не используются схемой приложения, остаются неизмененными.

Режимы проверки схемы и рекомендации по миграции схем описаны в руководстве по управлению схемами и коннекторами.

Режим проверки определяется с помощью ключа schemaValidation в файле dataconnect.yaml . Если schemaValidation не указан, CLI применяет совместимые изменения и запрашивает подтверждение перед выполнением любых строгих изменений. См. справочник по настройке .

Управление изменениями в коннекторах

При выполнении firebase deploy интерфейс командной строки инициирует обновление соответствующих коннекторов. Интерфейс анализирует изменения в каждом коннекторе и выдает набор оценочных сообщений, касающихся изменений в коннекторах, которые могут привести к неожиданному поведению (сообщения уровня предупреждения) или сбоям (сообщения уровня нарушения совместимости) в предыдущих версиях клиентского кода.

оценка воздействия Сценарий
Уровень предупреждения (совместимость с проводным подключением, возможно изменение поведения)
  • Удаление поля, допускающего значение NULL, из запроса без аннотации @retired .
Уровень риска (несовместимость проводного соединения, может привести к сбоям в работе клиентов)
  • Преобразование переменной, допускающей значение NULL, в переменную, не допускающую значение NULL, без указания значения по умолчанию.
  • Изменение типа данных поля на совместимый с JSON (например, Int на Float ).
  • Преобразование столбца, в котором не может быть значение NULL, в столбец, допускающий значение NULL.
  • Удаление переменной, допускающей значение null, без аннотации @retired .
  • Удаление ненулевой переменной со значением по умолчанию без аннотации @retired .
Уровень риска (несовместимость сети, приведет к сбоям в работе клиентов)
  • Удаление операции без аннотации @retired .
  • Удаление ненулевого поля из запроса без аннотации @retired .
  • Добавление ненулевой переменной без значения по умолчанию.
  • Изменение типа данных поля на несовместимый (например, String на Int ).
  • Удаление ненулевой переменной без значения по умолчанию и без аннотации @retired .

В интерактивных средах CLI отображает оценку каждого коннектора и запрашивает необходимые изменения. Передача флага --force эквивалентна принятию всех оценок.

В неинтерактивных средах:

  • Если будут получены только предупреждения (возможные изменения в поведении), будут развернуты все коннекторы, и предупреждения будут записаны в терминал.
  • Если произойдут какие-либо критические проверки, коннекторы не будут развернуты, а предупреждения будут записаны в терминал. Вы можете переопределить это с помощью флага --force .

код авторизации аудита

Data Connect помогает вам провести аудит вашей стратегии авторизации, анализируя код коннектора при развертывании на сервере с помощью firebase deploy из Firebase CLI. Вы можете использовать этот аудит для проверки вашего кода.

При развертывании коннекторов интерфейс командной строки выведет результаты оценки существующего, измененного и нового кода операций в вашем коннекторе.

При изменении и создании новых операций интерфейс командной строки выдает предупреждения и запрашивает подтверждение при использовании определенных уровней доступа в новых операциях или при изменении существующих операций для использования этих уровней доступа.

Предупреждения и подсказки всегда появляются в следующих случаях:

  • PUBLIC

Кроме того, предупреждения и запросы появляются на следующих уровнях доступа, если вы не дополняете их фильтрами с использованием auth.uid :

  • USER
  • USER_ANON
  • USER_EMAIL_VERIFIED

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

Команды SDK

Генерация SDK

dataconnect:sdk:generate

firebase dataconnect:sdk:generate

Эта команда генерирует типизированные SDK, указанные в файле connector.yaml .

Также ознакомьтесь с руководствами по работе с веб-SDK , Android SDK и iOS SDK .

Командование Описание

firebase dataconnect:sdk:generate

Флаг Описание

--смотреть

Обеспечивает бесперебойную работу процесса и генерирует новые SDK при каждом сохранении изменений в файлах GQL схемы и коннектора.

Если генерация не удастся, ошибки будут выведены в стандартный вывод, сгенерированный код не будет изменен, и выполнение команды продолжится.

–-only connectorId:platform

Генерировать SDK только для одной платформы и одного коннектора.

С помощью флага –only можно передавать значения, разделенные запятыми.

firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin

Команды управления Cloud SQL

Предоставление ролей SQL для Cloud SQL

Data Connect работает поверх вашего собственного экземпляра PostgreSQL, размещенного в Cloud SQL. Команды ролей SQL помогают управлять правами доступа к таблицам базы данных.

dataconnect:sql:setup

firebase dataconnect:sql:setup

Эта команда настраивает начальные глобальные права доступа к таблицам в вашей базе данных.

Стандартный процесс создания и управления базой данных предполагает, что ваш проект использует новую (с нуля) базу данных, и при вызове команды firebase deploy Data Connect отобразит изменения схемы базы данных, которые необходимо внести, и выполнит все миграции после вашего одобрения. Если вы предпочитаете такой способ, dataconnect:sql:setup предложит вам предоставить разрешения, включая права superuser на владение схемой.

Для существующих (модернизированных) баз данных у вас может быть собственный рабочий процесс миграции схем, и вы хотите самостоятельно сохранять права собственности на схемы. Если это ваш предпочтительный способ, обязательно откажитесь от выполнения миграции SQL-запросов в dataconnect:sql:setup . В результате отказа Data Connect Data Connect получит только доступ read и write к таблицам вашей базы данных, но права собственности на схемы и миграция останутся за вами.

Более подробное обсуждение и примеры использования см. в разделе «Управление службами и базами данных» .

dataconnect:sql:grant

firebase dataconnect:sql:grant

В некоторых случаях вам может потребоваться прямой доступ к базе данных для запроса или обновления данных, генерируемых приложениями Data Connect . Для этого вам необходимо предоставить одну из ролей, определенных в этом разделе, соответствующему пользователю или учетной записи службы.

Подробную информацию о предоставленных ролях см. в разделе «Роли пользователей PostgreSQL» .

Роль Роль SQL Разрешения Использование Грантовый
читатель firebasereader_<db_name>_<schema_name> Доступ к базе данных только для чтения.

Может выполнять операции SELECT над всеми таблицами в указанной схеме.
Идеально подходит для пользователей или сервисов, которым требуется извлечение данных, но не их изменение. Да
писатель firebasewriter_<db_name>_<schema_name> Доступ к базе данных для чтения и записи.

Может выполнять операции SELECT , INSERT , UPDATE , DELETE и TRUNCATE над всеми таблицами в схеме.
Подходит для пользователей или сервисов, которым необходимо изменять данные в базе данных. Да
владелец firebaseowner_<db_name>_<schema_name> Владелец схемы.

Обладает всеми правами доступа ко всем таблицам и последовательностям в схеме.
Эта роль в сочетании с ролью IAM roles/cloudsql.client role предоставляет разрешение на выполнение миграции базы данных.

Например, при вызове команды firebase dataconnect:sql:migrate .
Да
суперпользователь cloudsqlsuperuser Встроенная роль суперпользователя с полными правами доступа к базе данных.

Помимо прав владельца, он может создавать схемы, удалять схемы, устанавливать расширения и выполнять любые другие административные задачи.

Доступ к нему осуществляется через командную строку путем входа в систему под именем пользователя "firebasesuperuser".
Необходимо для установки расширений, создания исходной схемы и предоставления другим пользователям любых доступных ролей SQL.

Если пользователю, не являющемуся администратором, необходимы права суперпользователя, миграция завершится неудачей, и пользователю будет предложено обратиться к администратору базы данных (т.е. к пользователю с roles/cloudsql.admin ) с просьбой выполнить привилегированные SQL-команды.
Предоставляется пользователям с roles/cloudsql.admin и не может быть предоставлена ​​напрямую из Firebase CLI.
Командование Описание

firebase dataconnect:sql:grant

Флаг/Параметр Описание

-R, --role role

Роль SQL, которую необходимо предоставить: владелец, писатель или читатель.

-E, --email email_address

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

Глобальные опции

Следующие глобальные параметры применяются ко всем командам:

  • Параметр --json преобразует вывод командной строки в формат JSON для последующего анализа другими инструментами.
  • Опции --noninteractive и --interactive при необходимости отменяют автоматическое определение сред, отличных от TTY.