Bu hızlı başlangıç kılavuzunda, uygulamanızda üretim SQL örneğiyle Firebase Data Connect'ü nasıl oluşturacağınızı öğreneceksiniz. Aşağıdakileri yapacaksınız:
- Firebase Data Connect dosyasını Firebase projenize ekleyin.
- Uygulamanız için bir Cloud SQL örneği hazırlayın.
- Üretim örneğiyle çalışmak için Visual Studio Code uzantısı içeren bir geliştirme ortamı oluşturun.
- Ardından aşağıdakileri nasıl yapacağınızı göstereceğiz:
- Film uygulaması için şema oluşturma
- Uygulamanızda kullanılacak sorguları ve mutasyonları tanımlayın
- Sorgularınızı ve mutasyonlarınızı örnek veri ile test etme
- Güçlü şekilde yazılmış SDK'lar oluşturun ve bunları uygulamanızda kullanın
- Nihai şemanızı, sorgularınızı ve verilerinizi buluta dağıtın.
Firebase projesi ve Cloud SQL veritabanı oluşturma
- Henüz oluşturmadıysanız bir Firebase projesi oluşturun.
- Firebase konsolunda Proje ekle'yi tıklayın ve ekrandaki talimatları uygulayın.
- Firebase konsolunun Data Connect bölümüne gidin ve ürün kurulum iş akışını uygulayın.
Projenizi Blaze planına yükseltin. Bu işlem, PostgreSQL için Cloud SQL örneği oluşturmanıza olanak tanır.
PostgreSQL için Cloud SQL veritabanınız için bir konum seçin.
Daha sonra onaylamak için proje, hizmet ve veritabanı adlarını ve kimliklerini not edin.
Kalan kurulum akışını uygulayın ve ardından Bitti'yi tıklayın.
Geliştirme akışı seçme
Data Connect, geliştirme araçlarını yüklemenin iki yolunu sunar.
Geliştirme ortamını ayarlama
- Yerel projeniz için yeni bir dizin oluşturun.
Oluşturduğunuz yeni dizinde aşağıdaki komutu çalıştırın.
curl -sL https://firebase.tools/dataconnect | bash
Bu komut dosyası, geliştirme ortamını sizin için kurmaya ve tarayıcı tabanlı bir IDE'yi başlatmaya çalışır. Bu IDE, şemanızı yönetmenize, uygulamanızda kullanılacak sorguları ve mutasyonları tanımlamanıza ve güçlü şekilde yazılmış SDK'lar oluşturmanıza yardımcı olmak için önceden paketlenmiş bir VS Code uzantısı da dahil olmak üzere araçlar sağlar.
alias dataconnect='curl -sL https://firebase.tools/dataconnect | bash'
Proje dizininizi oluşturma
Yerel projenizi ayarlamak için proje dizininizi ilk kullanıma hazırlayın. IDE penceresinde, sol paneldeki Firebase simgesini tıklayarak Data Connect VS Code uzantısı kullanıcı arayüzünü açın:
- Google ile oturum aç düğmesini tıklayın.
- Firebase projesi bağla düğmesini tıklayın ve daha önce konsolda oluşturduğunuz projeyi seçin.
- firebase init'i çalıştır düğmesini tıklayın ve akışı tamamlayın.
Emülatörleri başlat düğmesini tıklayın.
Şema oluşturma
Firebase proje dizininizdeki /dataconnect/schema/schema.gql
dosyasında, filmleri içeren bir GraphQL şeması tanımlamaya başlayın.
Film
Data Connect'te GraphQL alanları sütunlarla eşlenir. Movie
türünde id
, title
, imageUrl
ve genre
vardır. Data Connect
String
ve UUID
ilkel veri türlerini tanır.
Aşağıdaki snippet'i kopyalayın veya dosyada ilgili satırların yorumunu kaldırın.
# 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
}
MovieMetadata
Filmleriniz olduğunda film meta verilerini modelleyebilirsiniz.
Aşağıdaki snippet'i kopyalayın veya dosyada ilgili satırların yorumunu kaldırın.
# 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
alanının Movie
türüyle eşleştirildiğini unutmayın.
Data Connect, bunun Movie
ile MovieMetadata
arasındaki bir ilişki olduğunu anlıyor ve bu ilişkiyi sizin için yönetecektir.
Veri Bağlantısı şemaları hakkında daha fazla bilgiyi dokümanda bulabilirsiniz.
Şemanızı üretime dağıtma
Devam etmeden önce şemanızı dağıtmanız gerekir.
Uzantının kullanıcı arayüzünde, Firebase Data Connect panelinin altında Üretime dağıt'ı tıklayın.
Şemanızı üretim veritabanınıza dağıttıktan sonra şemayı Firebase konsolunda görüntüleyebilirsiniz.
Tablolarınıza veri ekleme
IDE düzenleyici panelinde, /dataconnect/schema/schema.gql
içindeki GraphQL türlerinin üzerinde CodeLens düğmelerinin göründüğünü görebilirsiniz. Şemanızı üretime dağıttığınız için arka uçtaki veritabanınıza veri eklemek için Veri ekle ve Çalıştır (Üretim) düğmelerini kullanabilirsiniz.
Movie
tablosuna kayıt eklemek için:
schema.gql
dosyasında,Movie
tür beyanının üstündeki Veri ekle düğmesini tıklayın.
- Oluşturulan
Movie_insert.gql
dosyasında, dört alan için verileri sabit kodlayın. - Çalıştır (Üretim) düğmesini tıklayın.
- Oluşturulan
MovieMetadata_insert
mutasyonunda istendiği gibi,MovieMetadata
tablosuna bir kayıt eklemek için önceki adımları tekrarlayın vemovieId
alanına Filminizinid
değerini girin.
Verilerin eklendiğini hızlıca doğrulamak için:
schema.gql
dosyasına dönüpMovie
tür beyanının üzerindeki Verileri oku düğmesini tıklayın.- Elde edilen
Movie_read.gql
dosyasında, sorguyu yürütmek için Çalıştır (Üretim) düğmesini tıklayın.
Veri Bağlantısı mutasyonları hakkında daha fazla bilgiyi dokümanda bulabilirsiniz.
Sorgunuzu tanımlayın
Şimdi eğlenceli kısım olan sorgulara geçelim. Geliştirici olarak GraphQL sorguları yerine SQL sorguları yazmaya alışkın olduğunuzdan bu durum başlangıçta biraz farklı gelebilir. Ancak GraphQL, ham SQL'den çok daha kısa ve tür açısından güvenlidir. VS Code uzantımız da geliştirme deneyimini kolaylaştırır.
/dataconnect/connector/queries.gql
dosyasını düzenlemeye başlayın. Tüm filmleri almak istiyorsanız aşağıdaki gibi bir sorgu kullanın.
# File `/dataconnect/connector/queries.gql`
# @auth() directives control who can call each operation.
# Anyone should be able to list all movies, so the auth level
# is set to PUBLIC
query ListMovies @auth(level: PUBLIC) {
movies {
id
title
imageUrl
genre
}
}
Yakındaki CodeLens düğmesini kullanarak sorguyu yürütün.
Veri Bağlantısı sorguları hakkında daha fazla bilgiyi dokümanda bulabilirsiniz.
SDK oluşturma
- SDK'yı uygulamaya ekle düğmesini tıklayın.
Görünen iletişim kutusunda, uygulamanızın kodunu içeren bir dizin seçin. Data Connect SDK kodu oluşturulur ve buraya kaydedilir.
Uygulama platformunuzu seçin, ardından SDK kodunun seçtiğiniz dizinde hemen oluşturulduğunu unutmayın.
Şemanızı ve sorgunuzu üretime dağıtma
Bir geliştirme iterasyonunda çalıştınız. Artık şemanızı, verilerinizi ve sorgularınızı Firebase uzantısı kullanıcı arayüzü veya Firebase CLI ile sunucuya dağıtabilirsiniz.
IDE penceresindeki VS Code uzantısı kullanıcı arayüzünde Üretime dağıt düğmesini tıklayın.
Dağıtıldıktan sonra şemanın, işlemlerin ve verilerin buluta yüklendiğini doğrulamak için Firebase konsoluna gidin. Şemayı görüntüleyebilir ve işlemlerinizi konsolda da çalıştırabilirsiniz. PostgreSQL için Cloud SQL örneği, oluşturulan nihai dağıtılmış şemasıyla ve verileriyle güncellenir.
Veri Bağlantısı emülatörünü kullanma hakkında daha fazla bilgiyi dokümanda bulabilirsiniz.
Sorgunuzu bir uygulamadan çağırmak için SDK'ları kullanma
Şemanız ve sorgunuz üretime dağıtıldığına göre, Data Connect sorgunuza çağrı uygulamak için ListMovies
tarafından oluşturulan SDK'yı kullanabilirsiniz.
Web
- Firebase'i web uygulamanıza ekleyin.
React uygulamanızın ana dosyasında:
- Oluşturduğunuz SDK'yı içe aktarın
- Data Connect yöntemlerini çağırabilirsiniz.
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 />);
Swift
- Firebase'i iOS uygulamanıza ekleyin.
Oluşturulan SDK'yı kullanmak için Xcode'da bağımlılık olarak yapılandırın.
Xcode'un üst gezinme çubuğunda Dosya > Paket Bağımlılıkları Ekle > Yerel Ekle'yi seçin ve oluşturulan
Package.swift
dosyasını içeren klasörü seçin.Uygulamanızın ana temsilcisinde:
- Oluşturduğunuz SDK'yı içe aktarın
- Data Connect yöntemlerini çağırabilirsiniz.
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() } }
Kotlin Android
- Firebase'i Android uygulamanıza ekleyin.
Oluşturulan SDK'yı kullanmak için Data Connect'ü Gradle'de bağımlılık olarak yapılandırın.
app/build.gradle.kts
'nizdeplugins
vedependencies
öğelerini güncelleyin.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") }
Uygulamanızın ana etkinliğinde:
- Oluşturduğunuz SDK'yı içe aktarın
- Data Connect yöntemlerini çağırabilirsiniz.
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 } } } }
Flutter
- Firebase'i Flutter uygulamanıza ekleyin.
- flutterfire CLI'yi
dart pub global activate flutterfire_cli
yükleyin. flutterfire configure
'ü çalıştırın.- Uygulamanızın ana işlevinde:
- Oluşturduğunuz SDK'yı içe aktarın
- Data Connect yöntemlerini çağırabilirsiniz.
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();
}),
)
])));
}
}
Sonraki adımlar
Dağıtılan projenizi inceleyin ve daha fazla araç keşfedin:
Firebase konsolunda veritabanınıza veri ekleyin, şemalarınızı inceleyip değiştirin ve Data Connect hizmetinizi izleyin. Dokümanlar bölümünden daha fazla bilgi edinebilirsiniz. Örneğin, hızlı başlangıç kılavuzunu tamamladığınız için:
Şema, sorgu ve mutasyon geliştirme hakkında daha fazla bilgi edinin.
Web, Android, iOS ve Flutter için istemci SDK'ları oluşturma ve istemci kodundan sorgu ve mutasyon çağırma hakkında bilgi edinin.