在本快速入门中,您将学习如何使用生产 SQL 实例在应用中构建 Firebase Data Connect。
在 Firebase 控制台中,您将:
- 将 Firebase Data Connect 添加到您的 Firebase 项目。
- 在 Firebase 控制台中,使用 AI 辅助的架构生成功能为应用创建架构,然后部署该架构。
- 为应用预配 Cloud SQL 实例。
- 借助 Gemini in Firebase,使用示例数据填充数据库。
- 创建查询和突变,并借助 AI 辅助生成操作,您可以部署这些操作并使用它们在本地开发客户端代码。
然后,在本地开发环境中,您将:
- 设置开发工具,包括用于处理生产实例的 Visual Studio Code 扩展程序。
- 将本地环境与您在控制台中创建的资源同步。
- 生成强类型 SDK 并在应用中使用它们。
控制台流程:使用 AI 辅助功能设计架构,然后将其部署到数据库
- 如果尚未创建,请创建一个 Firebase 项目。
- 在 Firebase 控制台中,点击添加项目,然后按照屏幕上的说明操作。
- 前往 Firebase 控制台的 Data Connect 部分。
- 点击开始使用 Gemini 按钮。
- 在随即显示的架构生成器工作流面板中,描述应用,以便 Gemini 帮助您创建 GraphQL 架构。
- 查看 GraphQL 架构,然后点击升级并部署。
将您的项目升级到 Blaze 方案。这样一来,您就可以创建 Cloud SQL for PostgreSQL 实例了。
选择创建新的 Cloud SQL 实例。在随即显示的对话框中,为 Cloud SQL for PostgreSQL 数据库选择位置和命名。
您的应用架构已部署,同时还部署了与该架构对应的 PostgreSQL 数据库。
控制台流程:使用 AI 辅助功能为客户创建运营
部署架构后,您可以采取第一步措施,通过创建查询和突变的连接器来部署到后端,并稍后从客户端调用,从而使客户端应用可以访问这些数据。
我们的 AI 辅助工具可随时为您提供帮助。
当系统提示时,点击使用 Gemini 生成操作按钮。
片刻之后,在随即显示的生成操作工作流面板中,查看 Gemini 根据您的架构提供的查询和突变列表。
点击每个操作行,查看定义相应操作的 GraphQL 代码。如有必要,请使用回收站控件删除不需要的操作。
如需添加操作,请点击 + 添加按钮。然后:
用自然语言描述您的操作。
例如:
List all products查看生成的 GraphQL。
如果该操作可以接受,请点击插入将其添加到您的操作列表中。
继续移除和添加操作,直到您的操作集可以接受为止。
如需将此操作列表部署为可供客户端调用的连接器集,请选择连接器的名称,然后点击部署。
控制台流程:使用 Gemini in Firebase 创建突变并填充数据库
完成上述步骤后,您创建了一个包含相关实体类型的 Data Connect schema,并将其部署到生产环境,这意味着系统还创建并部署了一个包含相应表的 PostgreSQL 数据库。
如需填充数据库,您可以使用 Gemini in Firebase 帮助您通过更新一个或多个表的变更来播种数据。
打开数据标签页。
点击帮我写 GraphQL pen_spark 图标,然后点击种子数据 chip。
点击生成。系统会返回用于填充数据的 mutation。
查看输出。如果需要,请点击修改以优化提示,然后点击重新生成。
接下来,点击插入,将变异插入到数据编辑器中。
点击运行。
运行突变时,数据会写入 PostgreSQL 数据库中的相应表。您可以在控制台中创建查询,以查看存储的数据:
使用帮我写 GraphQL pen_spark 创建查询,重复执行上述步骤。
在随即显示的方框中,输入您的内容。
例如:
Query data for all sample products in my app.点击生成,然后点击运行。
本地流程:设置本地项目
现在,您已在已部署的数据库中拥有数据,并且已部署连接器,您可以在本地开发环境中继续开发架构和连接器。
首先,您需要设置本地环境。Data Connect 为您提供了两种安装开发工具的方式。
安装以下必备组件:
Node.js,使用 nvm-windows(适用于 Windows)或 nvm(适用于 macOS 或 Linux)。
创建项目目录并在 Visual Studio Code 中打开该目录。
从 VS Code Marketplace 安装 Firebase Data Connect 扩展程序。
点击使用 Google 账号登录按钮。
点击关联 Firebase 项目 按钮。
点击 Run firebase init 按钮。
点击启动模拟器按钮,以运行具有本地 PGlite 数据库的 Data Connect 模拟器。
本地流程:在本地环境中查找架构和连接器
上一部分中的firebase init 步骤会将资源同步到您的本地开发环境:
- 它会同步您部署的架构
- 找到您的架构:它位于 Firebase 项目目录的
/dataconnect/schema/schema.gql文件中。
- 找到您的架构:它位于 Firebase 项目目录的
- 它会同步您部署的连接器中的查询和变更
- 找到您的连接器:操作位于 Firebase 项目目录的
/dataconnect/connector/目录中。
- 找到您的连接器:操作位于 Firebase 项目目录的
本地流程:了解您的架构
架构示例:电影
在 Data Connect 中,GraphQL 字段会映射到列。Movie 类型可能具有 id、title、imageUrl 和 genre。Data Connect 可识别原初数据类型 String 和 UUID。
# File `/dataconnect/schema/schema.gql`
# By default, a UUID id key will be created by default as primary key.
type Movie @table {
id: UUID! @default(expr: "uuidV4()")
title: String!
imageUrl: String!
genre: String
}
架构示例 1:1 表:MovieMetadata
对于电影,您可以对电影元数据进行建模。
例如,在 schema.gql 中,您可以添加以下代码段或查看 Gemini 生成的代码。
# Movie - MovieMetadata is a one-to-one relationship
type MovieMetadata @table {
# This time, we omit adding a primary key because
# you can rely on Data Connect to manage it.
# @unique indicates a 1-1 relationship
movie: Movie! @unique
# movieId: UUID <- this is created by the above reference
rating: Float
releaseYear: Int
description: String
}
请注意,movie 字段映射到 Movie 类型。
Data Connect 知道这是 Movie 和 MovieMetadata 之间的关系,并将为您管理这种关系。
如需详细了解 Data Connect 架构,请参阅相关文档
本地流程:向表格添加更多数据
在 IDE 编辑器面板中,您可以看到 CodeLens 按钮显示在 /dataconnect/schema/schema.gql 中的 GraphQL 类型上方。与在控制台中一样,您可以创建突变来向生产数据库添加数据。
在本地添加数据到表:
- 在
schema.gql中,点击其中一种类型(例如Movie、Product、Account,具体取决于应用的性质)的声明上方的添加数据按钮。

- 系统会在您的工作目录(例如
Movie_insert.gql或Product_insert.gql)中添加一个新文件<type>_insert.qgl。对相应类型的字段中的数据进行硬编码。 - 点击运行(正式版)按钮。

- 重复上述步骤,向其他表格添加记录。
如需快速验证数据是否已添加,请执行以下操作:
- 返回到
schema.gql,点击类型声明上方的读取数据按钮。 - 在生成的
<type>_read.gql文件(例如Product_read.gql)中,点击运行(正式版)按钮以执行查询。
如需详细了解 Data Connect 突变,请参阅相关文档
本地流程:生成 SDK
您的架构和连接器操作会在本地同步。
现在,您可以使用 VS Code 扩展程序生成客户端 SDK,开始在 iOS、Android、Web 和 Flutter 应用中实现对查询和突变的调用。
- 在扩展程序界面中,点击向应用添加 SDK 按钮。
在随即显示的对话框中,选择一个包含应用代码的目录。Data Connect系统将生成 SDK 代码并将其保存到该目录中。
选择应用平台,然后注意,系统会立即在所选目录中生成 SDK 代码。
本地流程:使用 SDK 从应用中调用查询
之前,您已在 Firebase 控制台中部署了架构和操作。
如需从应用中调用操作,您可以使用 Data Connect 生成的 SDK 来实现对 ListMovies 查询的调用。
Web
- 将 Firebase 添加到您的网页应用。
在 React 应用的主文件中:
- 导入生成的 SDK:
// Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@dataconnect/generated';- 调用 Data Connect 方法。
function App() { const [movies, setMovies] = useState<ListMoviesData['movies']>([]); useEffect(() => { listMovies.then(res => setMovies(res.data)); }, []); return ( movies.map(movie => <h1>{movie.title}</h1>); ); } const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<App />);
Swift
- 将 Firebase 添加到您的 iOS 应用。
如需使用生成的 SDK,请在 Xcode 中将其配置为依赖项。
在 Xcode 顶部导航栏中,依次选择 File > Add Package Dependencies > Add Local,然后选择包含生成的
Package.swift的文件夹。在应用的主委托中:
导入 Data Connect SDK 和生成的 SDK:
import FirebaseDataConnect // Generated queries. // Update as needed with the package name of your generated SDK. import <CONNECTOR-PACKAGE-NAME> let connector = DataConnect.moviesConnector调用 Data Connect 方法:
struct ListMovieView: View { @StateObject private var queryRef = connector.listMovies.ref() var body: some View { VStack { Button { Task { do { try await refresh() } catch { print("Failed to refresh: \(error)") } } } label: { Text("Refresh") } // use the query results in a view ForEach(queryRef.data?.movies ?? []) { movie in Text(movie.title) } } } } @MainActor func refresh() async throws { _ = try await queryRef.execute() } struct ContentView_Previews: PreviewProvider { static var previews: some View { ListMovieView() } }
Kotlin Android
- 将 Firebase 添加到您的 Android 应用。
如需使用生成的 SDK,请在 Gradle 中将 Data Connect 配置为依赖项。
更新
app/build.gradle.kts中的plugins和dependencies。plugins { // Use whichever versions of these dependencies suit your application. // The versions shown here were the latest as of March 14, 2025. // Note, however, that the version of kotlin("plugin.serialization") must, // in general, match the version of kotlin("android"). id("com.android.application") version "8.9.0" id("com.google.gms.google-services") version "4.4.2" val kotlinVersion = "2.1.10" kotlin("android") version kotlinVersion kotlin("plugin.serialization") version kotlinVersion } dependencies { // Use whichever versions of these dependencies suit your application. // The versions shown here were the latest versions as of March 14, 2025. implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta04") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1") implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3") // These dependencies are not strictly required, but will very likely be used // when writing modern Android applications. implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0") implementation("androidx.appcompat:appcompat:1.7.0") implementation("androidx.activity:activity-ktx:1.10.1") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7") implementation("com.google.android.material:material:1.12.0") }在应用的主 activity 中:
- 从生成的 SDK 获取连接器实例:
private val connector = com.myapplication.MoviesConnector.instance- 调用 Data Connect 方法。
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val textView: TextView = findViewById(R.id.text_view) lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { val result = connector.listMovies.runCatching { execute { } } val newTextViewText = result.fold( onSuccess = { val titles = it.data.movies.map { it.title } "${titles.size} movies: " + titles.joinToString(", ") }, onFailure = { "ERROR: ${it.message}" } ) textView.text = newTextViewText } } } }
Flutter
- 将 Firebase 添加到您的 Flutter 应用。
- 安装 flutterfire CLI
dart pub global activate flutterfire_cli。 - 运行
flutterfire configure。 在应用的主函数中:
- 导入生成的 SDK:
// Generated queries. // Update as needed with the path to your generated SDK import 'movies_connector/movies.dart';- 调用 Data Connect 方法。
class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Column(children: [ ConstrainedBox( constraints: const BoxConstraints(maxHeight: 200), child: FutureBuilder( future: MoviesConnector.instance.listMovies().execute(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return ListView.builder( scrollDirection: Axis.vertical, itemBuilder: (context, index) => Card( child: Text( snapshot.data!.data.movies[index].title, )), itemCount: snapshot.data!.data.movies.length, ); } return const CircularProgressIndicator(); }), ) ]))); } }
后续步骤
查看已部署的项目并探索更多工具:
- 在 Firebase 控制台中,您可以向数据库添加数据、检查和修改架构,以及监控 Data Connect 服务。
如需了解详情,请参阅相关文档。例如,由于您已完成快速入门:
- 了解更多 AI 辅助工具和指南,帮助您生成架构、查询和变更。AI 辅助功能指南介绍了如何在 IDE 中设置和使用 MCP 服务器,以及撰写提示的最佳实践。
- 详细了解架构、查询和变更开发
- 了解如何生成客户端 SDK,以及如何从 Web、Android、iOS 和 Flutter 的客户端代码中调用查询和突变。