Data Connect 的 Firebase CLI 命令参考

Firebase CLI 是一个工具,可让您通过命令行管理和配置 Firebase 产品和服务。

CLI 提供了一些命令,可用于执行各种 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 进行产品设置,CLI 会提示您输入新的服务名称和位置,以及是否要关联现有 Cloud SQL for PostgreSQL 实例或创建新实例。

如果已关联现有实例,CLI 会检查是否存在兼容的设置,例如 IAM 身份验证和公共 IP 地址。

Local Emulator Suite 设置

CLI 流程可用于设置模拟器,包括 Data Connect 模拟器。

Data Connect 模拟器命令

启动 Data Connect 模拟器

emulators:start/exec

firebase emulators:start/exec

在交互模式下使用 Local Emulator Suite 版本的 Data Connect 模拟器(使用 start),或在脚本驱动的非交互模式下使用该模拟器(使用 exec)。

架构和连接器管理命令

本部分包含有关您用于管理架构和连接器的命令的 CLI 参考信息。

如需了解与这些命令相关的操作用例和推荐做法,请参阅架构和连接器管理指南

部署架构和连接器资源

deploy

firebase deploy

此命令会为 firebase.json 中编入索引的 Data Connect 服务部署资源。如有必要,会执行架构迁移

命令 说明

firebase deploy

标志 说明

–-only dataconnect

为此项目的所有 Data Connect 服务部署架构和连接器,但不部署其他 Firebase 产品资源。

- 仅限 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 架构

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 数据库。

使用默认的 dataconnect.yaml 文件设置新的本地 Data Connect 项目时,dataconect:sql:migrate 命令的行为是先提示您进行任何必要的更改,然后再提示您进行任何可选的更改,最后才会执行更改。您可以通过更新 dataconnect.yaml 配置来修改此行为,以便始终包含或忽略可选更改,如以严格或兼容模式迁移架构中所述。

在交互式环境中,CLI 会显示每个迁移 SQL 语句(以及它是否具有破坏性),并提示您要应用的更改。传递 --force 标志相当于接受所有提示。

在非交互式环境中:

  • 如果没有 --force,则只会进行非破坏性更改。如果存在破坏性更改,CLI 会中止,且不会进行任何更改。
  • 使用 --force 时,系统会进行所有更改。如果其中包含任何破坏性更改,系统会输出这些更改,并提示您是否要继续(除非您提供了 --force 标志)。
命令 说明

firebase dataconnect:sql:migrate

标志 说明

serviceId

迁移指定服务的数据库。如果您的项目只有一个服务,系统会推断出 serviceId。

–-force

自动接受提示。

与其他 --only 标志一样,您可以提供多个服务(以英文逗号分隔)。

在严格模式或兼容模式下迁移架构

Data Connect 架构迁移有两种不同的架构验证模式:严格兼容。严格模式验证要求数据库架构与应用架构完全匹配,然后才能部署应用架构。兼容模式验证要求数据库架构与应用架构兼容,这意味着数据库中未被应用架构使用的元素会保持不变。

架构和连接器管理指南介绍了这些架构验证模式和架构迁移最佳实践

验证模式是使用 dataconnect.yaml 文件中的 schemaValidation 键定义的。如果未指定 schemaValidation,CLI 会应用兼容性更改,并在执行任何严格更改之前提示您。请参阅配置参考文档

SDK 命令

生成 SDK

dataconnect:sdk:generate

firebase dataconnect:sdk:generate

此命令会生成 connector.yaml 中声明的类型化 SDK。

另请参阅有关使用 Web SDKAndroid SDKiOS SDK 的指南。

命令 说明

firebase dataconnect:sdk:generate

标志 说明

–-watch

每当您保存对架构和连接器 GQL 文件所做的更改时,都会让该进程保持运行并生成新的 SDK。

如果生成失败,系统会将错误输出到标准输出,生成的代码不会更改,并且命令会继续运行。

–-only connectorId:platform

仅为单个平台和单个连接器生成 SDK。

使用 –only 标志时,您可以传递以英文逗号分隔的值。

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

Cloud SQL 管理命令

为 Cloud SQL 授予 SQL 角色

dataconnect:sql:grant

firebase dataconnect:sql:grant

Data Connect 基于 Cloud SQL 上托管的您自己的 PostgreSQL 实例运行。在某些情况下,您可能需要直接访问数据库,以查询或更新 Data Connect 应用生成的数据。为此,您需要向所需的用户或服务账号授予本部分中定义的某个角色。

如需详细了解授予的角色,请参阅 PostgreSQL 用户角色

角色 SQL 角色 权限 用法 可授权
读取器 firebasereader_<db_name>_<schema_name> 对数据库的只读权限。

可对指定架构中的所有表执行 SELECT 操作。
非常适合需要检索但不修改数据的用户或服务。
作家 firebasewriter_<db_name>_<schema_name> 对数据库的读写权限。

可以对架构中的所有表执行 SELECTINSERTUPDATEDELETETRUNCATE 操作。
适用于需要修改数据库中数据的用户或服务。
所有者 firebaseowner_<db_name>_<schema_name> 架构所有者。

对架构中的所有表和序列拥有全部权限。
此角色与 IAM roles/cloudsql.client 角色搭配使用,可授予对数据库执行迁移的权限。

例如,调用 firebase dataconnect:sql:migrate 时。
超级用户 cloudsqlsuperuser 内置超级用户角色,对数据库拥有完整权限。

除了所有者权限之外,该角色还可以创建架构、删除架构、安装扩展程序,以及执行任何其他管理任务。

在 CLI 中通过以“firebasesuperuser”身份登录访问。
安装扩展程序、创建初始架构以及向其他用户授予任何可授予的 SQL 角色都需要此角色。

如果非管理员用户需要超级用户权限,迁移将会失败,并提示用户让数据库管理员(即具有 roles/cloudsql.admin 权限的用户)运行特权 SQL 命令。
已授予具有 roles/cloudsql.admin 权限的用户,且无法直接通过 Firebase CLI 授予
命令 说明

firebase dataconnect:sql:grant

标志/参数 说明

-R、--role 角色

要授予的 SQL 角色,可以是 owner、writer 或 reader 之一。

-E, --email email_address

要向其授予角色的用户或服务账号的电子邮件地址。

全局选项

以下全局选项适用于所有命令:

  • --json 会将 CLI 输出切换为 JSON,以便其他工具进行解析。
  • --noninteractive--interactive 会根据需要替换对非 TTY 环境的自动检测。