Bu hızlı başlangıç kılavuzu, web ve mobil uygulamalarınızı PostgreSQL veritabanına bağlamak için Firebase Data Connect'yı kullanmaya başlamanıza yardımcı olur. Bu kurstan sonra:
- VS Code ve Firebase CLI ile yerel Firebase Data Connect proje dizininizi ayarlayın.
- Uygulama fikirlerinize dayalı olarak doğal dilde Data Connect şemalar, sorgular ve mutasyonlar oluşturun.
- Data ConnectSorgu ve mutasyon çalıştırmak için uygulamalarınızda kesin tür SDK'larını kullanın.
- PostgreSQL için Cloud SQL örneği, Data Connect şeması, sorgular ve mutasyonlar sağlama (Blaze planı gerektirir).
Yerel proje dizinini ayarlama
Data Connect için yerel geliştirme araçlarını iki şekilde yükleyebilirsiniz.
Aşağıdaki ön koşulları yükleyin:
Windows için nvm-windows, macOS veya Linux için nvm kullanarak Node.js.
Bir proje dizini oluşturun ve Visual Studio Code'da açın.
VS Code Marketplace'ten Firebase Data Connect uzantısını yükleyin.
Google ile oturum aç düğmesini tıklayın.
Firebase projesi bağla düğmesini tıklayın.
Run firebase init (Firebase başlatma işlemini çalıştır) düğmesini tıklayın.
Data Connect emülatörünü yerel bir PGlite veritabanıyla çalıştırmak için Emülatörleri başlat düğmesini tıklayın.
Şemayı inceleme
Firebase Data Connect, veri modelinizi tanımlamak için GraphQL'i kullanır. @table yönergesi, bir GraphQL türünü PostgreSQL tablosuyla eşler. Türdeki alanlar PostgreSQL sütunlarıyla eşlenir. Tablolar arasındaki ilişkileri, birleşik birincil anahtarlara sahip birleştirme tablolarını kullanarak çoktan çoğa ilişkiler de dahil olmak üzere diğer @table türlerine referans veren alanları kullanarak tanımlayabilirsiniz.
Varsayılan kurulumda Data Connect şema dosyalarını dataconnect/schema/ dizininde bulabilirsiniz. Aşağıda, movie şablon şemasından iki örnek tablo verilmiştir. Gemini'ı kullanarak oluşturduysanız şemanız farklı olabilir.
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")
}
Veri Bağlantısı şemaları hakkında daha fazla bilgi edinin.
Sorgular ve mutasyonlar geliştirme
Firebase Data Connect, sorgular ve mutasyonlar için GraphQL'i kullanır. Bunları .gql dosyalarında tanımlar ve uygulamanızdan adıyla çağırırsınız. GraphQL söz dizimi, uygulamanızın ihtiyaç duyduğu verileri tam olarak getirmek için kesin olarak türlenmiş SDK'lar ve esnek bir API sağlar.
Veritabanınızdaki başlangıç verileri
Emülatör çalışırken başlangıç verileriyle doldurabilirsiniz. Sağlanan dataconnect/seed_data.gql dosyasını kullanabilir veya kendi mutasyonlarınızı yazabilirsiniz.
Mutasyonları yürütmek ve yerel PGlite veritabanınızı doldurmak için VS Code'daki Run (local) Code Lens düğmesini kullanın.

Sorguları ve mutasyonları inceleme
Varsayılan kurulumda, Data Connect sorgularını ve mutasyonlarını dataconnect/example/ dizininde bulabilirsiniz.
İlişkisel verileri iç içe yerleştirilmiş sorgularla tam olarak sorgulayabilirsiniz.
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 ile güvenli sorgular ve mutasyonlar oluşturmanıza yardımcı olur.
Uygulamanızın güvenliğini sağlamak için web ve mobil uygulamalar yalnızca @auth yönergeleri içeren Data Connect sorgularına ve mutasyonlarına erişebilir. Sorgular ve mutasyonlar, {field}_expr: "auth.uid" gibi bir ifade kullanarak Firebase Auth UID'ye güvenli bir şekilde erişebilir.
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 sorguları hakkında daha fazla bilgi edinin Data Connect mutasyonları hakkında daha fazla bilgi edinin Data Connect Auth hakkında daha fazla bilgi edinin.
Sorgu ve mutasyon oluşturma
Data Connect'ı etkili bir şekilde kullanmak için GraphQL uzmanı olmanız gerekmez. Doğal dil açıklamalarından Data Connect sorguları ve mutasyonları oluşturabilirsiniz.
Herhangi bir .gql dosyasında, yorum başlatmak ve sorguyu veya mutasyonu açıklamak için # yazın. Ardından, GraphQL işlemini oluşturmak için Generate/Refine Operation (İşlem Oluştur/İyileştir) Code Lens düğmesini kullanın.

Oluşturulan SDK'yı uygulamanızda kullanma
firebase init dataconnect, projenizdeki uygulamalar için tür güvenli SDK'ları otomatik olarak ayarlar. Gerekirse VS Code uzantısındaki Add SDK to
app (Uygulamaya SDK ekle) düğmesini kullanarak veya firebase init
dataconnect:sdk komutunu çalıştırarak SDK'yı manuel olarak ekleyebilirsiniz.
Web
- Firebase'i web uygulamanıza ekleyin.
React uygulamanızın ana dosyasında:
- Oluşturduğunuz SDK'yı içe aktarın:
// Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@dataconnect/generated';- Uygulamanızı Data Connect emülatörüne bağlanacak şekilde yapılandırın:
import { connectDataConnectEmulator } from 'firebase/data-connect'; const dataConnect = getDataConnect(connectorConfig); connectDataConnectEmulator(dataConnect, 'localhost', 9399);- Data Connect yöntemlerini çağırın.
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 File > Add Package Dependencies > Add Local'ı (Dosya > Paket Bağımlılıkları Ekle > Yerel Ekle) seçin ve oluşturulan
Package.swift'yi içeren klasörü belirleyin.Uygulamanızın ana temsilcisinde:
Data Connect SDK'yı ve oluşturduğunuz SDK'yı içe aktarın:
import FirebaseDataConnect // Generated queries. // Update as needed with the package name of your generated SDK. import <CONNECTOR-PACKAGE-NAME> let connector = DataConnect.moviesConnectorUygulamanızı Data Connect emülatörüne bağlanacak şekilde yapılandırın:
// 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 yöntemlerini çağırın:
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 Gradle'da Data Connect bağımlılık olarak yapılandırın.
pluginsvedependenciesöğeleriniapp/build.gradle.ktshizmetinizde 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'dan bir bağlayıcı örneği alın:
private val connector = com.myapplication.MoviesConnector.instance- Uygulamanızı Data Connect emülatörüne bağlanacak şekilde yapılandırın:
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 yöntemlerini çağırın.
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'yı yükleyin
dart pub global activate flutterfire_cli. - Koşu
flutterfire configure. Uygulamanızın ana işlevinde:
- Oluşturduğunuz SDK'yı içe aktarın:
// Generated queries. // Update as needed with the path to your generated SDK import 'movies_connector/movies.dart';- Uygulamanızı Data Connect emülatörüne bağlanacak şekilde yapılandırın:
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 yöntemlerini çağırın.
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(); }), ) ]))); } }
Üretime dağıtma
Şemanızı, sorgularınızı ve mutasyonlarınızı üretimde dağıtmak için:
Blaze planını kullanmak için Firebase projesini yükseltin.
Data Connect VS Code uzantısında Üretime dağıt düğmesini tıklayın veya bir terminalde çalıştırın:
firebase deploy --only dataconnectDağıtım işleminden sonra, şemanızı görüntülemek ve sorgu ile mutasyon çalıştırmak için Firebase konsolunu ziyaret edin.
dataconnect.yaml hakkında daha fazla bilgi edinin Data Connect'nin Cloud SQL ile nasıl çalıştığı hakkında daha fazla bilgi edinin
Sonraki adımlar
Hızlı başlangıç kılavuzunu tamamladığınıza göre, sonraki adımlar şunlardır:
- Hızlı başlangıç uygulama deposunu keşfedin ve web için codelab, iOS için codelab veya Android için codelab'imizi takip ederek tam özellikli bir Data Connect uygulaması oluşturun.
- Veritabanınıza veri ekleyin, şemalarınızı inceleyin ve Firebase konsolunda Data Connect hizmetinizi izleyin.
- Gemini Code Assist gibi yapay zeka destekli geliştirme araçlarıyla Firebase MCP sunucusunu ayarlayın.
- Şema, sorgu ve mutasyon geliştirme hakkında daha fazla bilgi edinin.
- Data Connect PostgreSQL şemasını nasıl yönettiği hakkında daha fazla bilgi edinin.
- Web, Android, iOS ve Flutter için istemci SDK'ları ile Node.js için Yönetici SDK'ları hakkında daha fazla bilgi edinin.