Это краткое руководство поможет вам начать работу с Firebase SQL Connect, чтобы подключить веб- и мобильные приложения к базе данных PostgreSQL. Вы сможете:
- Настройте локальный каталог проекта Firebase SQL Connect с помощью VS Code и интерфейса командной строки Firebase.
- Генерируйте схемы, запросы и мутации SQL Connect на основе идей для приложений, описанных обычным языком.
- Используйте SDK со строгой типизацией в своих приложениях, чтобы выполнять запросы и мутации SQL Connect.
- Создайте экземпляр Cloud SQL для PostgreSQL, схему SQL Connect, запросы и мутации.
Настройте локальный каталог проекта
Установить локальные инструменты разработки для SQL Connect можно двумя способами.
В каталоге проекта выполните следующую команду:
Скрипт установит интерфейс командной строки Firebase и расширение SQL Connect VS Code, а также поможет вам
firebase init dataconnect, чтобы настроить проект. Если у вас не установлено приложение VS Code, скрипт откроет его в браузере.curl -sL https://firebase.tools/init/dataconnect | editor=true bashОткройте экран расширения SQL Connect VS Code, нажав на значок Firebase на левой панели Visual Studio Code.
Нажмите Start emulators (Запустить эмуляторы), чтобы запустить эмулятор с локальной базой данных PGlite.
Проверить схему
Firebase SQL Connect использует GraphQL для определения модели данных. Директива @table сопоставляет тип GraphQL с таблицей PostgreSQL. Поля в типе сопоставляются со столбцами PostgreSQL. Вы можете определять связи между таблицами, используя поля, которые ссылаются на другие типы @table, в том числе связи "многие ко многим", используя таблицы соединений с составными первичными ключами.
В стандартной конфигурации файлы схемы SQL 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")
}
Подробнее о схемах SQL Connect…
Как создавать запросы и мутации
Firebase SQL Connect использует GraphQL для запросов и изменений. Вы определяете их в файлах .gql и вызываете по имени из своего приложения. Синтаксис GraphQL предоставляет строго типизированные SDK и гибкий API для получения именно тех данных, которые нужны вашему приложению.
Заполнить базу данных начальными данными
После запуска эмулятора вы можете заполнить его начальными данными. Вы можете использовать предоставленный файл dataconnect/seed_data.gql или написать собственные мутации.
Нажмите кнопку Run (local) (Выполнить локально) в VS Code, чтобы выполнить изменения и заполнить локальную базу данных PGlite.

Просмотр запросов и изменений
В настройках по умолчанию запросы и мутации SQL 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 }
}
}
}
SQL Connect помогает создавать безопасные запросы и мутации с помощью Firebase Auth.
Чтобы обеспечить безопасность приложения, веб- и мобильные приложения могут получать доступ только к запросам и изменениям SQL Connect с директивами @auth. Запросы и мутации могут безопасно получать доступ к UID Firebase Auth с помощью выражения {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
}
)
}
Подробнее о запросах SQL Connect, мутациях SQL Connect и аутентификации SQL Connect…
Генерирование запросов и изменений
Чтобы эффективно использовать SQL Connect, не нужно быть экспертом по GraphQL. Вы можете генерировать запросы и мутации SQL Connect на основе описаний на естественном языке.
В любом файле .gql введите #, чтобы начать комментарий и описать запрос или мутацию. Затем нажмите кнопку Generate/Refine Operation (Создать/уточнить операцию), чтобы создать операцию GraphQL.

Как использовать сгенерированный SDK в приложении
firebase init dataconnect автоматически настраивает типобезопасные SDK для приложений в вашем проекте. При необходимости вы можете добавить SDK вручную с помощью кнопки Add SDK to app (Добавить SDK в приложение) в расширении SQL Connect для 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';- Настройте приложение для подключения к эмулятору SQL Connect:
import { connectDataConnectEmulator } from 'firebase/data-connect'; const dataConnect = getDataConnect(connectorConfig); connectDataConnectEmulator(dataConnect, 'localhost', 9399);- Вызовите методы SQL 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.В основном делегате приложения:
Импортируйте SDK SQL Connect и сгенерированный SDK:
import FirebaseDataConnect // Generated queries. // Update as needed with the package name of your generated SDK. import <CONNECTOR-PACKAGE-NAME> let connector = DataConnect.moviesConnectorНастройте приложение для подключения к эмулятору SQL 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)Вызовите методы SQL 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, настройте SQL 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- Настройте приложение для подключения к эмулятору SQL 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) }- Вызовите методы SQL 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';- Настройте приложение для подключения к эмулятору SQL 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()); }- Вызовите методы SQL 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 SQL Connect.
Нажмите кнопку Deploy to production (Развернуть в рабочей среде) в расширении SQL Connect VS Code или выполните в терминале следующую команду:
firebase deploy --only dataconnectПосле развертывания вы можете просматривать схему, а также выполнять запросы и мутации в консоли Firebase (выберите Базы данных и хранилище > SQL Connect).
Подробнее о dataconnect.yaml… Подробнее о том, как SQL Connect работает с Cloud SQL…
Дальнейшие действия
Теперь, когда вы выполнили инструкции из руководства по быстрому началу работы, вы можете:
- Изучите репозиторий приложения для быстрого старта и создайте полнофункциональное приложение SQL Connect, следуя инструкциям из практических работ для веб-приложений, iOS или Android.
- Добавляйте данные в базу данных, проверяйте схемы и отслеживайте сервис SQL Connect в консоли Firebase.
- Настройте MCP-сервер Firebase с помощью инструментов разработки на основе искусственного интеллекта, таких как Antigravity, Claude Code или Cursor.
- Подробнее о разработке схем, запросов и мутаций…
- Подробнее о том, SQL Connect управляет схемой PostgreSQL…
- Подробнее о клиентских SDK для веб-приложений, Android, iOS и Flutter, а также об Admin SDK для Node.js…