Ten samouczek dla początkujących pomoże Ci skonfigurować i uruchomić Firebase SQL Connect w celu połączenia aplikacji internetowych i mobilnych z bazą danych PostgreSQL. W ramach ćwiczenia:
- Skonfigurujesz lokalny Firebase SQL Connect katalog projektu za pomocą VS Code i wiersza poleceń Firebase.
- Wygenerujesz SQL Connect schematy, zapytania i mutacje na podstawie pomysłów na aplikację w języku naturalnym.
- Użyjesz w aplikacjach pakietów SDK z silnym typowaniem, aby uruchamiać SQL Connect zapytania i mutacje.
- Udostepnisz instancję Cloud SQL for PostgreSQL, schemat SQL Connect, zapytania i mutacje.
Konfigurowanie lokalnego katalogu projektu
Narzędzia do lokalnego programowania na potrzeby SQL Connect możesz zainstalować na 2 sposoby.
W katalogu projektu uruchom to polecenie.
Skrypt instaluje wiersz poleceń Firebase i rozszerzenie SQL Connect VS Code oraz przeprowadza Cię przez
firebase init dataconnect, aby skonfigurować projekt. Jeśli nie masz zainstalowanej aplikacji VS Code na komputerze, skrypt otworzy ją w przeglądarce.curl -sL https://firebase.tools/init/dataconnect | editor=true bashOtwórz ekran rozszerzenia SQL Connect VS Code, klikając ikonę Firebase w lewym panelu Visual Studio Code.
Kliknij Uruchom emulatory , aby uruchomić emulator z lokalną bazą danych PGlite.
Sprawdź schemat
Firebase SQL Connect używa GraphQL do definiowania modelu danych. Dyrektywa
@table mapuje typ
GraphQL na tabelę PostgreSQL. Pola w typie są mapowane na kolumny PostgreSQL. Relacje między tabelami możesz definiować za pomocą pól, które odwołują się do innych typów @table, w tym relacji wiele-do-wielu za pomocą tabel łączeń z złożonymi kluczami podstawowymi.
W konfiguracji domyślnej pliki schematu SQL Connect znajdziesz w
katalogu dataconnect/schema/ Oto 2 przykładowe tabele ze schematu szablonu filmu. Jeśli do wygenerowania schematu używasz Gemini, schemat może się różnić.
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")
}
Więcej informacji o sche1/} schematachSQL Connect
Tworzenie zapytań i mutacji
Firebase SQL Connect używa GraphQL do zapytań i mutacji. Definiujesz je w plikach .gql i wywołujesz je według nazwy z aplikacji. Składnia GraphQL zapewnia pakiety SDK z silnym typowaniem i elastyczny interfejs API do pobierania dokładnych danych potrzebnych aplikacji.
Wypełnianie bazy danych danymi początkowymi
Gdy emulator jest uruchomiony, możesz wypełnić go danymi początkowymi. Możesz użyć podanego pliku dataconnect/seed_data.gql lub napisać własne mutacje.
Aby wykonać mutacje i wypełnić lokalną bazę danych PGlite, użyj przycisku Uruchom (lokalnie) Code Lens w VS Code.

Sprawdzanie zapytań i mutacji
W konfiguracji domyślnej zapytania i mutacje SQL Connect znajdziesz w
dataconnect/example/ katalogu.
Możesz precyzyjnie wysyłać zapytania o dane relacyjne za pomocą zagnieżdżonych zapytań.
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 pomaga tworzyć bezpieczne zapytania i mutacje za pomocą Firebase Auth.
Aby zapewnić bezpieczeństwo aplikacji, aplikacje internetowe i mobilne mogą uzyskiwać dostęp do
SQL Connect zapytań i mutacji za pomocą
@auth
dyrektyw. Zapytania i mutacje mogą bezpiecznie uzyskiwać dostęp do identyfikatora UID Firebase Auth
za pomocą wyrażenia takiego jak {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
}
)
}
Więcej informacji o zapytaniach SQL Connect Więcej informacji o mutacjach SQL Connect Więcej informacji o uwierzytelnianiu SQL Connect
Generowanie zapytań i mutacji
Aby skutecznie korzystać z SQL Connect, nie musisz być ekspertem w GraphQL. Zapytania i mutacje SQL Connect możesz generować na podstawie opisów w języku naturalnym.
W dowolnym pliku .gql wpisz #, aby rozpocząć komentarz i opisać zapytanie lub mutację. Następnie użyj przycisku Wygeneruj/dopracuj operację Code Lens, aby wygenerować operację GraphQL.

Używanie wygenerowanego pakietu SDK w aplikacji
firebase init dataconnect automatycznie konfiguruje pakiety SDK z silnym typowaniem dla aplikacji w Twoim projekcie. W razie potrzeby możesz dodać pakiet SDK ręcznie, klikając przycisk Dodaj pakiet SDK do
aplikacji w rozszerzeniu SQL Connect VS Code lub uruchamiając firebase init
dataconnect:sdk.
Sieć
- Dodaj Firebase do swojej aplikacji internetowej.
W głównym pliku aplikacji React:
- Zaimportuj wygenerowany pakiet SDK:
// Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@dataconnect/generated';- Instrumentuj aplikację, aby połączyć się z emulatorem SQL Connect:
import { connectDataConnectEmulator } from 'firebase/data-connect'; const dataConnect = getDataConnect(connectorConfig); connectDataConnectEmulator(dataConnect, 'localhost', 9399);- Wywołaj metody 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
- Dodaj Firebase do swojej aplikacji na iOS.
Aby używać wygenerowanego pakietu SDK, skonfiguruj go jako zależność w Xcode.
Na górnym pasku nawigacyjnym Xcode wybierz File > Add Package Dependencies > Add Local (Plik > Dodaj zależności pakietu > Dodaj lokalnie) i wybierz folder zawierający wygenerowany plik
Package.swift.W głównym delegacie aplikacji:
Zaimportuj pakiet SDK SQL Connect i wygenerowany pakiet SDK:
import FirebaseDataConnect // Generated queries. // Update as needed with the package name of your generated SDK. import <CONNECTOR-PACKAGE-NAME> let connector = DataConnect.moviesConnectorInstrumentuj aplikację, aby połączyć się z emulatorem 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)Wywołaj SQL Connect metody:
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 na Androidzie
- Dodaj Firebase do swojej aplikacji na Androida.
Aby używać wygenerowanego pakietu SDK, skonfiguruj SQL Connect jako zależność w Gradle.
Zaktualizuj
pluginsidependencieswapp/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") }W głównym działaniu aplikacji:
- Pobierz instancję oprogramowania sprzęgającego z wygenerowanego pakietu SDK:
private val connector = com.myapplication.MoviesConnector.instance- Instrumentuj aplikację, aby połączyć się z emulatorem 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) }- Wywołaj metody 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
- Dodaj Firebase do swojej aplikacji Flutter.
- Zainstaluj interfejs wiersza poleceń flutterfire
dart pub global activate flutterfire_cli. - Uruchom
flutterfire configure. W głównej funkcji aplikacji:
- Zaimportuj wygenerowany pakiet SDK:
// Generated queries. // Update as needed with the path to your generated SDK import 'movies_connector/movies.dart';- Instrumentuj aplikację, aby połączyć się z emulatorem 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()); }- Wywołaj metody 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(); }), ) ]))); } }
Wdrażanie w gałęzi produkcyjnej
Aby wdrożyć schemat, zapytania i mutacje w gałęzi produkcyjnej:
Zapoznaj się z informacjami o cenach i bezpłatnym okresie próbnym na stronie Cennik. Twój projekt może kwalifikować się do jednej z Firebase SQL Connect opcji okresu próbnego.
Kliknij przycisk Wdróż w gałęzi produkcyjnej w rozszerzeniu SQL Connect VS Code lub uruchom w terminalu:
firebase deploy --only dataconnectPo wdrożeniu możesz wyświetlić schemat oraz uruchamiać zapytania i mutacje w konsoli Firebase (kliknij Bazy danych i miejsce na dane > SQL Connect).
Więcej informacji o dataconnect.yaml Więcej informacji o tym, jak SQL Connect działa z Cloud SQL
Dalsze kroki
Teraz, gdy masz już za sobą samouczek dla początkujących, możesz wykonać te czynności:
- Zapoznaj się z repozytorium aplikacji z samouczka dla początkujących i utwórz w pełni funkcjonalną aplikację SQL Connect korzystając z naszych samouczków dla początkujących na potrzeby sieci, samouczków dla początkujących na potrzeby iOS, lub samouczków dla początkujących na potrzeby Androida.
- Dodaj dane do bazy danych, sprawdź schematy i monitoruj usługę SQL Connect w Firebase konsoli.
- Skonfiguruj serwer Firebase MCP za pomocą narzędzi programistycznych opartych na AI, takich jak Gemini CLI, Claude Code lub Cursor.
- Dowiedz się więcej o tworzeniu schematów, zapytań i mutacji.
- Dowiedz się więcej o tym, jak SQL Connect zarządza schematem PostgreSQL.
- Dowiedz się więcej o pakietach SDK klienta na potrzeby sieci, Androida, iOS i Fluttera oraz o pakietach Admin SDK na potrzeby Node.js.