Это краткое руководство поможет вам начать работу с Firebase Data Connect и подключить ваши веб- и мобильные приложения к базе данных PostgreSQL. Вы:
- Настройте локальный каталог проекта Firebase Data Connect с помощью VS Code и Firebase CLI.
- Создавайте схемы, запросы и мутации Data Connect на основе идей вашего приложения на естественном языке.
- Используйте строго типизированные SDK в своих приложениях для выполнения запросов и мутаций Data Connect .
- Предоставьте экземпляр Cloud SQL для PostgreSQL, схему Data Connect, запросы и мутации (требуется план Blaze).
Настройте локальный каталог проекта
Установить локальные инструменты разработки для Data Connect можно двумя способами.
- В каталоге проекта выполните следующую команду. - Скрипт устанавливает Firebase CLI и расширение Data Connect VS Code, а также помогает настроить проект через - firebase init dataconnect. Если у вас не установлен десктопный VS Code, скрипт открывает его в браузере.- curl -sL https://firebase.tools/init/dataconnect | editor=true bash
- Откройте экран расширения Data Connect VS Code, щелкнув значок Firebase на левой панели Visual Studio Code. 
- Нажмите «Запустить эмуляторы» , чтобы запустить эмулятор с локальной базой данных PGlite. 
Схема обзора
 Firebase Data Connect использует GraphQL для определения модели данных. Директива @table сопоставляет тип GraphQL с таблицей PostgreSQL. Поля этого типа сопоставляются со столбцами PostgreSQL. Вы можете определять связи между таблицами, используя поля, ссылающиеся на другие типы @table , включая связи «многие ко многим» с использованием объединенных таблиц с составными первичными ключами.
 В настройках по умолчанию файлы схемы Data Connect находятся в каталоге dataconnect/schema/ . Вот два примера таблиц из схемы шаблона фильма. Ваша схема может отличаться, если вы использовали Gemini для её генерации.
type Movie @table {
  # Every table has an implicit primary key field that looks something like:
  #  id: UUID! @default(expr: "uuidV4()")
  title: String!
  imageUrl: String!
  genre: String
}
type Review @table(key: ["movie", "user"]) {
  user: User!
  movie: Movie!
  rating: Int
  reviewText: String
  reviewDate: Date! @default(expr: "request.time")
}
Узнайте больше о схемах Data Connect
Разработка запросов и мутаций
 Firebase Data Connect использует GraphQL для запросов и мутаций. Вы определяете их в файлах .gql и вызываете их по имени из своего приложения. Синтаксис GraphQL предоставляет строго типизированные SDK и гибкий API для получения именно тех данных, которые нужны вашему приложению.
Начальные данные в вашей базе данных
 Запустив эмулятор, вы можете заполнить его начальными данными. Вы можете использовать предоставленный файл dataconnect/seed_data.gql или написать собственные мутации.
Используйте кнопку Run (local) Code Lens в VS Code, чтобы выполнить мутации и заполнить локальную базу данных PGlite.

Просмотр запросов и мутаций
 В настройках по умолчанию запросы и мутации Data Connect можно найти в каталоге dataconnect/example/ .
С помощью вложенных запросов можно точно запрашивать реляционные данные.
query ListMovies @auth(level: PUBLIC, insecureReason: "Anyone can list all movies and their reviews.") {
  movies {
    title imageUrl genre
    reviews_on_movie {
      rating reviewDate
      user { username }
    }
  }
}
Data Connect помогает вам создавать безопасные запросы и мутации с помощью Firebase Auth.
 Для обеспечения безопасности вашего приложения веб- и мобильные приложения могут получать доступ к запросам и мутациям Data Connect только с помощью директив @auth . Запросы и мутации могут безопасно получать доступ к UID аутентификации Firebase, используя выражение типа {field}_expr: "auth.uid" .
mutation AddReview($movieId: UUID!, $rating: Int!, $reviewText: String!) @auth(level: USER) {
  review_upsert(
    data: {
      userId_expr: "auth.uid"
      movieId: $movieId
      rating: $rating
      reviewText: $reviewText
    }
  )
}
Узнайте больше о запросах Data Connect Узнайте больше о мутациях Data Connect Узнайте больше об аутентификации Data Connect
Генерация запросов и мутаций
Для эффективного использования Data Connect не нужно быть экспертом по GraphQL. Вы можете генерировать запросы и мутации Data Connect на основе описаний на естественном языке.
 В любом файле .gql введите # , чтобы начать комментарий и описать запрос или мутацию. Затем используйте кнопку «Генерировать/уточнить код операции» для генерации операции GraphQL. 

Используйте сгенерированный SDK в своем приложении
 firebase init dataconnect автоматически настраивает типобезопасные SDK для приложений в вашем проекте. При необходимости вы можете добавить SDK вручную с помощью кнопки «Добавить SDK в приложение» в расширении VS Code или выполнив firebase init dataconnect:sdk . 
Интернет
- Добавьте Firebase в свое веб- приложение.
- В основном файле вашего приложения React: - Импортируйте сгенерированный SDK:
 - // Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@dataconnect/generated';- Настройте свое приложение для подключения к эмулятору Data Connect :
 - import { connectDataConnectEmulator } from 'firebase/data-connect'; const dataConnect = getDataConnect(connectorConfig); connectDataConnectEmulator(dataConnect, 'localhost', 9399);- Вызов методов 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 />);
Быстрый
- Добавьте Firebase в ваше приложение iOS .
- Чтобы использовать сгенерированный SDK, настройте его как зависимость в Xcode. - В верхней панели навигации Xcode выберите Файл > Добавить зависимости пакета > Добавить локальный и выберите папку, содержащую сгенерированный файл - 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 : - // Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: // connector.useEmulator(port: 9999)
- Методы вызова 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() } }
 
Котлин Android
- Добавьте 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:
 - private val connector = com.myapplication.MoviesConnector.instance- Настройте свое приложение для подключения к эмулятору Data Connect :
 - private val connector = com.myapplication.MoviesConnector.instance .apply { // Connect to the emulator on "10.0.2.2:9399" (default port) dataConnect.useEmulator() // (alternatively) if you're running your emulator on non-default port: // dataConnect.useEmulator(port = 9999) }- Вызов методов 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 } } } }
Трепетание
- Добавьте 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 :
 - void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); MoviesConnector.instance.dataConnect .useDataConnectEmulator(Uri.base.host, 443, isSecure: true); runApp(const MyApp()); }- Вызов методов 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 для использования плана Blaze. 
- Нажмите кнопку «Развернуть в производстве» в расширении Data Connect VS Code или запустите в терминале: - firebase deploy --only dataconnect- После развертывания посетите консоль Firebase , чтобы просмотреть схему и выполнить запросы и мутации. 
Узнайте больше о dataconnect.yaml Узнайте больше о том, как Data Connect работает с Cloud SQL
Следующие шаги
Теперь, когда вы завершили краткое руководство, вот несколько дальнейших шагов:
- Изучите репозиторий приложений для быстрого старта и создайте полнофункциональное приложение Data Connect , следуя нашим практическим занятиям для веб-сайтов , для iOS или для Android .
- Добавьте данные в базу данных, проверьте схемы и отслеживайте службу Data Connect в консоли Firebase .
- Настройте сервер Firebase MCP с инструментами разработки на базе искусственного интеллекта, такими как Gemini Code Assist .
- Узнайте больше о разработке схем , запросов и мутаций .
- Узнайте больше о том, как Data Connect управляет схемой PostgreSQL .
- Узнайте больше о клиентских SDK для веб-приложений , Android , iOS и Flutter , а также об административных SDK для Node.js.