В этом кратком руководстве вы узнаете, как создать Firebase Data Connect в своем приложении с помощью производственного экземпляра SQL.
В консоли Firebase вы сможете:
- Добавьте Firebase Data Connect в свой проект Firebase.
- Создайте схему для приложения в консоли Firebase с помощью Schema Assist и разверните ее.
- Предоставьте экземпляр Cloud SQL для своего приложения.
- С помощью Gemini Code Assist заполните свою базу данных образцами данных .
Затем в вашей локальной среде разработки вы сможете:
- Настройте инструменты разработки, включая расширение Visual Studio Code, для работы с вашим производственным экземпляром.
- Синхронизируйте свою локальную среду с ресурсами, созданными вами в консоли.
- Используйте инструменты расширения, которые помогут вам реализовать запрос , который будет использоваться в вашем приложении.
- Создавайте строго типизированные SDK и используйте их в своем приложении.
- Разверните окончательную схему, запрос и данные в облаке.
Поток консоли: спроектируйте свою схему и разверните ее в своей базе данных.
- Если вы еще этого не сделали, создайте проект Firebase.
- В консоли Firebase нажмите «Добавить проект» и следуйте инструкциям на экране.
- Перейдите в раздел Data Connect консоли Firebase .
- Нажмите кнопку «Начать работу с Gemini» .
- На появившейся панели рабочего процесса генератора схем опишите приложение, чтобы Gemini могла помочь вам создать схему GraphQL.
- Просмотрите схему GraphQL, затем нажмите «Обновить и развернуть» .
Обновите свой проект до плана Blaze. Это позволит вам создать экземпляр Cloud SQL для PostgreSQL.
Выберите Создать новый экземпляр Cloud SQL . В появившемся диалоговом окне выберите расположение и имя для вашей базы данных Cloud SQL for PostgreSQL.
Схема вашего приложения развернута вместе с базой данных PostgreSQL, соответствующей этой схеме.
Порядок работы консоли: используйте Gemini в Firebase , чтобы создать мутацию и заполнить базу данных.
Выполнив предыдущий шаг, вы создали схему Data Connect , состоящую из соответствующих типов сущностей, и развернули ее в рабочей среде, то есть также была создана и развернута база данных PostgreSQL с соответствующими таблицами .
Чтобы заполнить вашу базу данных, вы можете использовать Gemini в Firebase , который поможет вам использовать входные данные на естественном языке для определения мутации GraphQL для обновления одной из ваших таблиц и запроса для подтверждения ваших обновлений.
Откройте вкладку Данные .
Щелкните значок «Помоги мне написать GraphQL pen_spark» и в появившемся поле введите введенные данные.
Например:
Add data for three sample products to my app.
Нажмите «Создать» . Мутация возвращается.
Просмотрите результат. При необходимости нажмите «Изменить» , чтобы уточнить запрос, и нажмите «Регенерировать» .
Затем нажмите «Вставить» , чтобы вставить мутацию в редактор данных.
Нажмите «Выполнить» .
Когда вы запускаете мутацию, данные записываются в соответствующую таблицу вашей базы данных PostgreSQL. Вы можете создать запрос в консоли для просмотра сохраненных данных:
Повторите предыдущие шаги, используя Помогите мне написать GraphQL pen_spark , чтобы создать запрос.
В появившемся поле введите введенные данные.
Например:
Query data for all sample products in my app.
Нажмите «Создать» , затем «Выполнить» .
Локальный поток: выберите инструменты разработки
Теперь, когда у вас есть данные в развернутой базе данных, вы можете продолжить разработку схемы и соединителей в локальной среде разработки.
Во-первых, вам нужно настроить локальную среду. Data Connect предлагает два способа установки инструментов разработки.
Локальный поток: настройка среды разработки
- Создайте новый каталог для вашего локального проекта.
Запустите следующую команду в новом созданном каталоге.
curl -sL https://firebase.tools/dataconnect | bash
Этот сценарий пытается настроить для вас среду разработки и запустить IDE на основе браузера. Эта IDE предоставляет инструменты, в том числе предварительно связанное расширение VS Code, которые помогут вам управлять схемой, определять запросы и мутации, которые будут использоваться в вашем приложении, а также генерировать строго типизированные SDK.
alias dataconnect='curl -sL https://firebase.tools/dataconnect | bash'
Локальный поток: настройка каталога проекта
Чтобы настроить локальный проект, инициализируйте каталог проекта. В окне IDE на левой панели щелкните значок Firebase, чтобы открыть пользовательский интерфейс расширения Data Connect VS Code:
- Нажмите кнопку «Войти через Google» .
- Нажмите кнопку «Подключить проект Firebase» и выберите в консоли проект, который вы создали ранее.
Нажмите кнопку «Запустить инициализацию Firebase» и завершите процесс.
Нажмите кнопку «Запустить эмуляторы» .
Локальный поток: найдите свою схему в локальной среде.
Шаг firebase init
в предыдущем разделе, синхронизировал схему, которую вы развернули из консоли, с вашей локальной средой разработки.
Найдите свою схему: она находится в каталоге вашего проекта Firebase, в файле /dataconnect/schema/schema.gql
.
Локальный поток: работа со своей схемой
Пример схемы: Фильм
В 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 появляются над типами GraphQL в /dataconnect/schema/schema.gql
. Как и в консоли, вы можете создать мутацию для добавления данных в рабочую базу данных.
Работая локально, чтобы добавить данные в таблицу:
- В
schema.gql
нажмите кнопку «Добавить данные» над объявлением одного из ваших типов (например,Movie
,Product
,Account
, в зависимости от типа вашего приложения). - В ваш рабочий каталог добавляется новый файл
<type>_insert.qgl
, напримерMovie_insert.gql
илиProduct_insert.gql
. Данные жесткого кода в полях для этого типа. - Нажмите кнопку «Запустить (Производство)» .
- Повторите предыдущие шаги, чтобы добавить запись в другие таблицы.
Для быстрой проверки данных добавлено:
- Вернувшись в
schema.gql
, нажмите кнопку «Читать данные» над объявлением типа. - В полученном файле
<type>_read.gql
, напримерProduct_read.gql
, нажмите кнопку «Выполнить (Производство)» , чтобы выполнить запрос.
Узнайте больше о мутациях Data Connect в документации.
Локальный поток: определите свой запрос
Теперь самое интересное, запросы. Как разработчик, вы привыкли писать запросы SQL, а не запросы GraphQL, поэтому поначалу это может показаться немного другим. Однако GraphQL гораздо более краток и типобезопасен, чем чистый SQL. А наше расширение VS Code упрощает разработку.
Чтобы реализовать запрос, вы можете адаптировать запрос, сгенерированный с помощью нашего CodeLens:
- В
/dataconnect/schema/schema.gql
над типом (Movie
,Product
,Account
и т. д.) нажмите кнопку Read data CodeLens. - В полученном файле
<type>_read.gql
проверьте запрос, нажав кнопку «Выполнить (производство)» . - Скопируйте работающий запрос в
/dataconnect/connector/queries.gql
. Чтобы этот запрос можно было развернуть, объявите для него уникальное имя.
Например, в следующем общем примере
query_name
может бытьListMovies
,ListProducts
илиListAccounts
.
# File `/dataconnect/connector/queries.gql`
# @auth() directives control who can call each operation.
query <query_name> @auth(level: PUBLIC) {
<table_name> {
<field_1>
<field_2>
<field_3>
}
}
Выполните запрос, используя расположенную рядом кнопку CodeLens.
Дополнительные сведения о запросах Data Connect см. в документации.
Локальный поток: создание SDK
- Нажмите кнопку «Добавить SDK в приложение» .
В появившемся диалоговом окне выберите каталог, содержащий код вашего приложения. Код Data Connect SDK будет создан и сохранен там.
Выберите платформу своего приложения и обратите внимание, что код SDK сразу же создается в выбранном вами каталоге.
Локальный поток: разверните свою схему и запросите ее в рабочей среде
Вы прошли итерацию разработки. Теперь вы можете развернуть свою схему и запросы на сервере с помощью пользовательского интерфейса расширения Firebase или интерфейса командной строки Firebase , так же, как вы это делали со своей схемой.
В окне IDE в пользовательском интерфейсе расширения кода VS нажмите кнопку «Развернуть в производство» .
После развертывания перейдите в консоль Firebase , чтобы убедиться, что обновления схемы (если применимо) и операции загружены в облако. У вас должна быть возможность просматривать схему и выполнять операции на консоли. Экземпляр Cloud SQL для PostgreSQL будет обновлен с учетом окончательной развернутой сгенерированной схемы и данных.
Подробную информацию об использовании эмулятора Data Connect можно найти в документации.
Локальный поток: используйте SDK для вызова запроса из приложения.
Теперь, когда ваша обновленная схема (если применимо). и ваш запрос развернут в рабочей среде, вы можете использовать SDK, созданный Data Connect , для реализации вызова вашего запроса ListMovies
.
- Добавьте Firebase в свое веб- приложение.
В главном файле вашего приложения React:
- импортируйте сгенерированный SDK
- вызвать методы Data Connect .
import React from 'react'; import ReactDOM from 'react-dom/client'; // Generated queries. // Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@movie-app/movies'; 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 />);
- Добавьте Firebase в свое приложение для iOS .
Чтобы использовать сгенерированный SDK, настройте его как зависимость в Xcode.
В верхней панели навигации Xcode выберите «Файл» > «Добавить зависимости пакета» > «Добавить локальный» и выберите папку, содержащую сгенерированный
Package.swift
.В главном делегате вашего приложения:
- импортируйте сгенерированный SDK
- вызвать методы Data Connect .
import SwiftUI import FirebaseDataConnect // Generated queries. // Update as needed with the package name of your generated SDK. import <CONNECTOR-PACKAGE-NAME> let connector = DataConnect.moviesConnector 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() } }
- Добавьте Firebase в свое приложение для Android .
Чтобы использовать созданный SDK, настройте Data Connect как зависимость в Gradle.
Обновите
plugins
иdependencies
в вашемapp/build.gradle.kts
.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") }
В основной деятельности вашего приложения:
- импортируйте сгенерированный SDK
- вызвать методы Data Connect .
import android.os.Bundle import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.launch private val connector = com.myapplication.MoviesConnector.instance 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 } } } }
- Добавьте Firebase в свое приложение Flutter .
- Установите flutterfire CLI
dart pub global activate flutterfire_cli
. - Запустите
flutterfire configure
. - В основной функции вашего приложения:
- импортируйте сгенерированный SDK
- вызвать методы Data Connect .
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
// Generated queries.
// Update as needed with the path to your generated SDK
import 'movies_connector/movies.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
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();
}),
)
])));
}
}
Следующие шаги
Просмотрите развернутый проект и откройте для себя дополнительные инструменты:
- Добавляйте данные в свою базу данных, проверяйте и изменяйте свои схемы, а также отслеживайте работу службы Data Connect в консоли Firebase .
Дополнительную информацию можно найти в документации. Например, после завершения краткого руководства:
- Узнайте больше о разработке схем, запросов и мутаций.
- Узнайте о создании клиентских SDK, вызове запросов и мутациях из клиентского кода для Интернета , Android , iOS и Flutter .
В этом кратком руководстве вы узнаете, как создать Firebase Data Connect в своем приложении с помощью производственного экземпляра SQL.
В консоли Firebase вы сможете:
- Добавьте Firebase Data Connect в свой проект Firebase.
- Создайте схему для приложения в консоли Firebase с помощью Schema Assist и разверните ее.
- Предоставьте экземпляр Cloud SQL для своего приложения.
- С помощью Gemini Code Assist заполните свою базу данных примерами данных .
Затем в вашей локальной среде разработки вы сможете:
- Настройте инструменты разработки, включая расширение Visual Studio Code, для работы с вашим производственным экземпляром.
- Синхронизируйте свою локальную среду с ресурсами, созданными вами в консоли.
- Используйте инструменты расширения, которые помогут вам реализовать запрос , который будет использоваться в вашем приложении.
- Создавайте строго типизированные SDK и используйте их в своем приложении.
- Разверните окончательную схему, запрос и данные в облаке.
Поток консоли: спроектируйте свою схему и разверните ее в своей базе данных.
- Если вы еще этого не сделали, создайте проект Firebase.
- В консоли Firebase нажмите «Добавить проект» и следуйте инструкциям на экране.
- Перейдите в раздел Data Connect консоли Firebase .
- Нажмите кнопку «Начать работу с Gemini» .
- На появившейся панели рабочего процесса генератора схем опишите приложение, чтобы Gemini могла помочь вам создать схему GraphQL.
- Просмотрите схему GraphQL, затем нажмите «Обновить и развернуть» .
Обновите свой проект до плана Blaze. Это позволит вам создать экземпляр Cloud SQL для PostgreSQL.
Выберите Создать новый экземпляр Cloud SQL . В появившемся диалоговом окне выберите расположение и имя для вашей базы данных Cloud SQL for PostgreSQL.
Схема вашего приложения развернута вместе с базой данных PostgreSQL, соответствующей этой схеме.
Порядок работы консоли: используйте Gemini в Firebase , чтобы создать мутацию и заполнить базу данных.
Выполнив предыдущий шаг, вы создали схему Data Connect , состоящую из соответствующих типов сущностей, и развернули ее в рабочей среде, то есть также была создана и развернута база данных PostgreSQL с соответствующими таблицами .
Чтобы заполнить вашу базу данных, вы можете использовать Gemini в Firebase , который поможет вам использовать входные данные на естественном языке для определения мутации GraphQL для обновления одной из ваших таблиц и запроса для подтверждения ваших обновлений.
Откройте вкладку Данные .
Щелкните значок «Помоги мне написать GraphQL pen_spark» и в появившемся поле введите введенные данные.
Например:
Add data for three sample products to my app.
Нажмите «Создать» . Мутация возвращается.
Просмотрите результат. При необходимости нажмите «Изменить» , чтобы уточнить запрос, и нажмите «Регенерировать» .
Затем нажмите «Вставить» , чтобы вставить мутацию в редактор данных.
Нажмите «Выполнить» .
Когда вы запускаете мутацию, данные записываются в соответствующую таблицу вашей базы данных PostgreSQL. Вы можете создать запрос в консоли для просмотра сохраненных данных:
Повторите предыдущие шаги, используя Помогите мне написать GraphQL pen_spark , чтобы создать запрос.
В появившемся поле введите введенные данные.
Например:
Query data for all sample products in my app.
Нажмите «Создать» , затем «Выполнить» .
Локальный поток: выберите инструменты разработки
Теперь, когда у вас есть данные в развернутой базе данных, вы можете продолжить разработку схемы и соединителей в локальной среде разработки.
Во-первых, вам необходимо настроить локальную среду. Data Connect предлагает два способа установки инструментов разработки.
Локальный поток: настройка среды разработки
- Создайте новый каталог для вашего локального проекта.
Запустите следующую команду в новом созданном каталоге.
curl -sL https://firebase.tools/dataconnect | bash
Этот сценарий пытается настроить для вас среду разработки и запустить IDE на основе браузера. Эта IDE предоставляет инструменты, в том числе предварительно связанное расширение VS Code, которые помогут вам управлять схемой, определять запросы и мутации, которые будут использоваться в вашем приложении, а также генерировать строго типизированные SDK.
alias dataconnect='curl -sL https://firebase.tools/dataconnect | bash'
Локальный поток: настройка каталога проекта
Чтобы настроить локальный проект, инициализируйте каталог проекта. В окне IDE на левой панели щелкните значок Firebase, чтобы открыть пользовательский интерфейс расширения Data Connect VS Code:
- Нажмите кнопку «Войти через Google» .
- Нажмите кнопку «Подключить проект Firebase» и выберите в консоли проект, который вы создали ранее.
Нажмите кнопку «Запустить инициализацию Firebase» и завершите процесс.
Нажмите кнопку «Запустить эмуляторы» .
Локальный поток: найдите свою схему в локальной среде.
Шаг firebase init
в предыдущем разделе, синхронизировал схему, которую вы развернули из консоли, с вашей локальной средой разработки.
Найдите свою схему: она находится в каталоге вашего проекта Firebase, в файле /dataconnect/schema/schema.gql
.
Локальный поток: работа со своей схемой
Пример схемы: Фильм
В 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 появляются над типами GraphQL в /dataconnect/schema/schema.gql
. Как и в консоли, вы можете создать мутацию для добавления данных в рабочую базу данных.
Работая локально, чтобы добавить данные в таблицу:
- В
schema.gql
нажмите кнопку «Добавить данные» над объявлением одного из ваших типов (например,Movie
,Product
,Account
, в зависимости от типа вашего приложения). - В ваш рабочий каталог добавляется новый файл
<type>_insert.qgl
, напримерMovie_insert.gql
илиProduct_insert.gql
. Данные жесткого кода в полях для этого типа. - Нажмите кнопку «Запустить (Производство)» .
- Повторите предыдущие шаги, чтобы добавить запись в другие таблицы.
Для быстрой проверки данных добавлено:
- Вернувшись в
schema.gql
, нажмите кнопку «Читать данные» над объявлением типа. - В полученном файле
<type>_read.gql
, напримерProduct_read.gql
, нажмите кнопку «Выполнить (Производство)» , чтобы выполнить запрос.
Узнайте больше о мутациях Data Connect в документации.
Локальный поток: определите свой запрос
Теперь самое интересное, запросы. Как разработчик, вы привыкли писать запросы SQL, а не запросы GraphQL, поэтому поначалу это может показаться немного другим. Однако GraphQL гораздо более краток и типобезопасен, чем чистый SQL. А наше расширение VS Code упрощает разработку.
Чтобы реализовать запрос, вы можете адаптировать запрос, сгенерированный с помощью нашего CodeLens:
- В
/dataconnect/schema/schema.gql
над типом (Movie
,Product
,Account
и т. д.) нажмите кнопку Read data CodeLens. - В полученном файле
<type>_read.gql
проверьте запрос, нажав кнопку «Выполнить (производство)» . - Скопируйте работающий запрос в
/dataconnect/connector/queries.gql
. Чтобы этот запрос можно было развернуть, объявите для него уникальное имя.
Например, в следующем общем примере
query_name
может бытьListMovies
,ListProducts
илиListAccounts
.
# File `/dataconnect/connector/queries.gql`
# @auth() directives control who can call each operation.
query <query_name> @auth(level: PUBLIC) {
<table_name> {
<field_1>
<field_2>
<field_3>
}
}
Выполните запрос, используя расположенную рядом кнопку CodeLens.
Дополнительные сведения о запросах Data Connect см. в документации.
Локальный поток: создание SDK
- Нажмите кнопку «Добавить SDK в приложение» .
В появившемся диалоговом окне выберите каталог, содержащий код вашего приложения. Код Data Connect SDK будет создан и сохранен там.
Выберите платформу своего приложения и обратите внимание, что код SDK сразу же создается в выбранном вами каталоге.
Локальный поток: разверните свою схему и запросите ее в рабочей среде
Вы прошли итерацию разработки. Теперь вы можете развернуть свою схему и запросы на сервере с помощью пользовательского интерфейса расширения Firebase или интерфейса командной строки Firebase , так же, как вы это делали со своей схемой.
В окне IDE в пользовательском интерфейсе расширения кода VS нажмите кнопку «Развернуть в производство» .
После развертывания перейдите в консоль Firebase , чтобы убедиться, что обновления схемы (если применимо) и операции загружены в облако. У вас должна быть возможность просматривать схему и выполнять операции на консоли. Экземпляр Cloud SQL для PostgreSQL будет обновлен с учетом окончательной развернутой сгенерированной схемы и данных.
Подробную информацию об использовании эмулятора Data Connect можно найти в документации.
Локальный поток: используйте SDK для вызова запроса из приложения.
Теперь, когда ваша обновленная схема (если применимо). и ваш запрос развернут в рабочей среде, вы можете использовать SDK, созданный Data Connect , для реализации вызова вашего запроса ListMovies
.
- Добавьте Firebase в свое веб- приложение.
В главном файле вашего приложения React:
- импортируйте сгенерированный SDK
- вызвать методы Data Connect .
import React from 'react'; import ReactDOM from 'react-dom/client'; // Generated queries. // Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@movie-app/movies'; 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 />);
- Добавьте Firebase в свое приложение для iOS .
Чтобы использовать сгенерированный SDK, настройте его как зависимость в Xcode.
В верхней панели навигации Xcode выберите «Файл» > «Добавить зависимости пакета» > «Добавить локальный» и выберите папку, содержащую сгенерированный
Package.swift
.В главном делегате вашего приложения:
- импортируйте сгенерированный SDK
- вызвать методы Data Connect .
import SwiftUI import FirebaseDataConnect // Generated queries. // Update as needed with the package name of your generated SDK. import <CONNECTOR-PACKAGE-NAME> let connector = DataConnect.moviesConnector 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() } }
- Добавьте Firebase в свое приложение для Android .
Чтобы использовать созданный SDK, настройте Data Connect как зависимость в Gradle.
Обновите
plugins
иdependencies
в вашемapp/build.gradle.kts
.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") }
В основной деятельности вашего приложения:
- импортируйте сгенерированный SDK
- вызвать методы Data Connect .
import android.os.Bundle import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.launch private val connector = com.myapplication.MoviesConnector.instance 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 } } } }
- Добавьте Firebase в свое приложение Flutter .
- Установите flutterfire CLI
dart pub global activate flutterfire_cli
. - Запустите
flutterfire configure
. - В основной функции вашего приложения:
- импортируйте сгенерированный SDK
- вызвать методы Data Connect .
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
// Generated queries.
// Update as needed with the path to your generated SDK
import 'movies_connector/movies.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
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();
}),
)
])));
}
}
Следующие шаги
Просмотрите развернутый проект и откройте для себя дополнительные инструменты:
- Добавляйте данные в свою базу данных, проверяйте и изменяйте свои схемы, а также отслеживайте работу службы Data Connect в консоли Firebase .
Дополнительную информацию можно найти в документации. Например, после завершения краткого руководства:
- Узнайте больше о разработке схем, запросов и мутаций.
- Узнайте о создании клиентских SDK, вызове запросов и мутациях из клиентского кода для Интернета , Android , iOS и Flutter .
В этом кратком руководстве вы узнаете, как создать Firebase Data Connect в своем приложении с помощью производственного экземпляра SQL.
В консоли Firebase вы сможете:
- Добавьте Firebase Data Connect в свой проект Firebase.
- Создайте схему для приложения в консоли Firebase с помощью Schema Assist и разверните ее.
- Предоставьте экземпляр Cloud SQL для своего приложения.
- С помощью Gemini Code Assist заполните свою базу данных примерами данных .
Затем в вашей локальной среде разработки вы сможете:
- Настройте инструменты разработки, включая расширение Visual Studio Code, для работы с вашим производственным экземпляром.
- Синхронизируйте свою локальную среду с ресурсами, созданными вами в консоли.
- Используйте инструменты расширения, которые помогут вам реализовать запрос , который будет использоваться в вашем приложении.
- Создавайте строго типизированные SDK и используйте их в своем приложении.
- Разверните окончательную схему, запрос и данные в облаке.
Поток консоли: спроектируйте свою схему и разверните ее в своей базе данных.
- Если вы еще этого не сделали, создайте проект Firebase.
- В консоли Firebase нажмите «Добавить проект» и следуйте инструкциям на экране.
- Перейдите в раздел Data Connect консоли Firebase .
- Нажмите кнопку «Начать работу с Gemini» .
- На появившейся панели рабочего процесса генератора схем опишите приложение, чтобы Gemini могла помочь вам создать схему GraphQL.
- Просмотрите схему GraphQL, затем нажмите «Обновить и развернуть» .
Обновите свой проект до плана Blaze. Это позволит вам создать экземпляр Cloud SQL для PostgreSQL.
Выберите Создать новый экземпляр Cloud SQL . В появившемся диалоговом окне выберите расположение и имя для вашей базы данных Cloud SQL for PostgreSQL.
Схема вашего приложения развернута вместе с базой данных PostgreSQL, соответствующей этой схеме.
Порядок работы консоли: используйте Gemini в Firebase , чтобы создать мутацию и заполнить базу данных.
Завершая предыдущий шаг, вы создали схему Data Connect , состоящую из соответствующих типов объектов, и развернули ее для производства, что означает также создан и развернута база данных PostgreSQL с соответствующими таблицами .
Чтобы заполнить вашу базу данных, вы можете использовать Gemini в Firebase , чтобы помочь вам принять входные данные о естественном языке для определения мутации GraphQL для обновления одной из ваших таблиц и запроса для подтверждения ваших обновлений.
Откройте вкладку Data .
Нажмите на значок «Помочь мне» написать graphql pen_spark , и, в появлении, введите свой ввод.
Например:
Add data for three sample products to my app.
Нажмите Generate . Мутация возвращается.
Просмотрите вывод. При необходимости нажмите «Редактировать» , чтобы уточнить подсказку и нажмите «Регенерат» .
Далее нажмите «Вставить» , чтобы вставить мутацию в редактор данных.
Нажмите запустить .
Когда вы запускаете мутацию, данные записываются в применимую таблицу в вашей базе данных PostgreSQL. Вы можете создать запрос в консоли для просмотра хранимых данных:
Повторите предыдущие шаги, используя помогите мне написать graphql pen_spark , чтобы создать запрос.
В появлении, которая введите свой вход.
Например:
Query data for all sample products in my app.
Нажмите Generate , затем запустите .
Локальный поток: выберите инструмент разработки
Теперь, когда у вас есть данные в вашей развернутой базе данных, вы можете продолжить разработку своей схемы и разъемов в местной среде разработки.
Во -первых, вам нужно настроить локальную среду. Data Connect предлагает вам два способа установить инструменты разработки.
Локальный поток: настроить среду разработки
- Создайте новый каталог для вашего местного проекта.
Запустите следующую команду в созданном вами новом каталоге.
curl -sL https://firebase.tools/dataconnect | bash
Этот скрипт пытается настроить среду разработки для вас и запустить IDE на основе браузера. Этот IDE предоставляет инструменты, в том числе предварительно связанное расширение кода, чтобы помочь вам управлять вашей схемой и определить запросы и мутации, которые будут использоваться в вашем приложении, и генерировать SDK с твердыми типами.
alias dataconnect='curl -sL https://firebase.tools/dataconnect | bash'
Локальный поток: настройте каталог проекта
Чтобы настроить локальный проект, инициализируйте свой каталог проекта. В окне IDE, на левой панели, щелкните значок Firebase, чтобы открыть пользовательский интерфейс расширения Data Connect VS Code:
- Нажмите кнопку Google .
- Нажмите кнопку «Подключить кнопку проекта Firebase» и выберите проект, который вы создали ранее в консоли.
Нажмите кнопку «Запустить Firebase» и заполните поток.
Нажмите кнопку «Пуск эмуляторов» .
Местный поток: найдите свою схему в местной среде
Инициация firebase init
в предыдущем разделе синхронизировала схему, которую вы развернули из консоли в вашу местную среду разработки.
Найдите свою схему: она расположена в вашем каталоге проекта Firebase, в файле /dataconnect/schema/schema.gql
schema.gql.
Местный поток: работайте со своей схемой
Пример схемы: фильм
В 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
, и они будут управлять этими отношениями для вас.
Узнайте больше о схемах подключения данных в документации
Локальный поток: добавьте больше данных в ваши таблицы
На панели редактора IDE вы можете увидеть, как кнопки Codelens появляются по типам graphQL в /dataconnect/schema/schema.gql
. Как и в консоли, вы можете создать мутацию для добавления данных в свою производственную базу данных.
Работаю локально, чтобы добавить данные в таблицу:
- В
schema.gql
нажмите кнопку «Добавить данные» над объявлением одного из ваших типов (например,Movie
,Product
,Account
, в зависимости от характера вашего приложения). - Новый файл,
<type>_insert.qgl
, добавляется в ваш рабочий каталог, такой какMovie_insert.gql
илиProduct_insert.gql
. Данные жестких кодов в полях для этого типа. - Нажмите кнопку «Запустить» (производство) .
- Повторите предыдущие шаги, чтобы добавить запись в другие таблицы.
Чтобы быстро проверить данные, были добавлены:
- Вернувшись в
schema.gql
, нажмите кнопку «Читать данные» над объявлением типа. - В полученном файле
<type>_read.gql
, например,Product_read.gql
, нажмите кнопку Run (Производство) , чтобы выполнить запрос.
Узнайте больше о данных, подключив мутации в документации
Локальный поток: определите свой запрос
Теперь самое интересное, запросы. Как разработчик, вы привыкли писать запросы SQL, а не запросы GraphQL, так что это может показаться немного другим. Тем не менее, GraphQL гораздо более эру и тип, чем RAW SQL. И наше расширение кода VS облегчает опыт разработки.
Чтобы внедрить запрос, вы можете адаптировать один, сгенерированный с нашими коделенами:
- В
/dataconnect/schema/schema.gql
, выше типа (Movie
,Product
,Account
и т. Д.), Нажмите кнопку «Читать данные» Codelens. - В полученном файле
<type>_read.gql
протестируйте запрос, нажав кнопку «Запустить» (производство) . - Скопируйте функционирующий запрос в
/dataconnect/connector/queries.gql
. Чтобы сделать этот запрос развертываемым, объявите для него уникальное имя.
Например, в следующем общем примере
query_name
может бытьListMovies
, илиListProducts
, илиListAccounts
.
# File `/dataconnect/connector/queries.gql`
# @auth() directives control who can call each operation.
query <query_name> @auth(level: PUBLIC) {
<table_name> {
<field_1>
<field_2>
<field_3>
}
}
Выполните запрос, используя ближайшую кнопку Codelens.
Узнайте больше о данных подключения запросов в документации
Локальный поток: генерировать SDK
- Нажмите кнопку «Добавить SDK в приложение» .
В появлении диалога выберите каталог, содержащий код для вашего приложения. Data Connect Code будет сгенерирована и сохранена там.
Выберите платформу приложений, затем обратите внимание, что код SDK сразу же генерируется в выбранном вами каталоге.
Местный поток: разверните свою схему и запрос на производство
Вы работали через итерацию разработки. Теперь вы можете развернуть свою схему и запросы на сервер с помощью пользовательского интерфейса Firebase Extension или CLI Firebase , как и со своей схемой.
В окне IDE, в пользовательском интерфейсе vs Extension Extension, нажмите кнопку «Развернуть к производству» .
После развертывания перейдите в консоль Firebase , чтобы проверить обновления схемы (если применимо), а операции были загружены в облако. Вы должны иметь возможность просматривать схему, а также запустить свою деятельность на консоли. Cloud SQL для экземпляра PostgreSQL будет обновлен с помощью окончательной развернутой сгенерированной схемы и данных.
Узнайте больше об использовании эмулятора Data Connect в документации
Локальный поток: используйте SDK, чтобы вызвать ваш запрос из приложения
Теперь, когда ваша обновленная схема (если применима). И ваш запрос развернут в производстве, вы можете использовать SDK, который Data Connect сгенерированные для реализации вызова вашего запроса ListMovies
.
- Добавьте Firebase в ваше веб -приложение.
В основном файле вашего приложения React:
- импортируйте сгенерированный SDK
- Вызовые Data Connect методов.
import React from 'react'; import ReactDOM from 'react-dom/client'; // Generated queries. // Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@movie-app/movies'; 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 />);
- Добавьте Firebase в приложение для iOS .
Чтобы использовать сгенерированный SDK, настройте его как зависимость в XCode.
В верхней навигационной панели Xcode выберите «Файл»> «Добавить зависимости пакета»> «Добавить локальный» и выберите папку, содержащую сгенерированный
Package.swift
Swift.В главном делегате вашего приложения:
- импортируйте сгенерированный SDK
- Вызовые Data Connect методов.
import SwiftUI import FirebaseDataConnect // Generated queries. // Update as needed with the package name of your generated SDK. import <CONNECTOR-PACKAGE-NAME> let connector = DataConnect.moviesConnector 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() } }
- Добавьте Firebase в ваше приложение для Android .
Чтобы использовать сгенерированный SDK, настройте Data Connect как зависимость в Градле.
Обновите
plugins
иdependencies
в вашемapp/build.gradle.kts
.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") }
В основной деятельности вашего приложения:
- импортируйте сгенерированный SDK
- Вызовые Data Connect методов.
import android.os.Bundle import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.launch private val connector = com.myapplication.MoviesConnector.instance 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 } } } }
- Добавьте Firebase в приложение Flutter .
- Установите Flutterfire Cli
dart pub global activate flutterfire_cli
. - Запустить
flutterfire configure
. - В основной функции вашего приложения:
- импортируйте сгенерированный SDK
- Вызовые Data Connect методов.
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
// Generated queries.
// Update as needed with the path to your generated SDK
import 'movies_connector/movies.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
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();
}),
)
])));
}
}
Следующие шаги
Просмотрите свой развернутый проект и обнаружите больше инструментов:
- Добавьте данные в свою базу данных, осмотрите и измените свои схемы и отслеживайте службу Data Connect в консоли Firebase .
Доступ к дополнительной информации в документации. Например, с тех пор, как вы завершили QuickStart:
- Узнайте больше о схеме, разработке запросов и мутаций
- Узнайте о создании клиентских SDK и вызовах запросов и мутаций из клиентского кода для Web , Android , iOS и Flutter .