Trong hướng dẫn nhanh này, bạn sẽ tìm hiểu cách tạo Firebase Data Connect trong ứng dụng của mình một cách cục bộ mà không cần thiết lập một phiên bản SQL sản xuất. Bạn sẽ:
- Thêm Firebase Data Connect vào dự án Firebase của bạn.
- Thiết lập một môi trường phát triển, bao gồm cả các tiện ích Visual Studio Code để làm việc với một phiên bản cục bộ.
- Sau đó, chúng tôi sẽ hướng dẫn bạn cách:
- Sử dụng công cụ tiện ích VS Code, với Gemini Code Assist, để:
- Tạo giản đồ cho một ứng dụng
- Tạo truy vấn và đột biến hành chính để điền vào cơ sở dữ liệu cục bộ
- Giúp bạn triển khai các truy vấn và đột biến cho ứng dụng của mình trong một trình kết nối có thể triển khai
- Kiểm thử các truy vấn và đột biến bằng dữ liệu mẫu dựa trên trình mô phỏng cục bộ
- Tạo SDK có kiểu dữ liệu mạnh và sử dụng chúng trong ứng dụng của bạn
- Triển khai lược đồ và trình kết nối cuối cùng của bạn lên đám mây (không bắt buộc, khi nâng cấp lên gói Blaze).
- Sử dụng công cụ tiện ích VS Code, với Gemini Code Assist, để:
Chọn một quy trình phát triển cục bộ
Data Connect cung cấp cho bạn 2 cách để cài đặt các công cụ phát triển và làm việc cục bộ.
Điều kiện tiên quyết
Để sử dụng hướng dẫn bắt đầu nhanh này, bạn cần có những thứ sau.
- Visual Studio Code.
- Cài đặt Node.js, sử dụng nvm-windows cho Windows hoặc nvm cho macOS hoặc Linux.
- Một dự án Firebase. Nếu bạn chưa tạo, hãy tạo một dự án trong bảng điều khiển Firebase.
Thiết lập môi trường phát triển
- Tạo một thư mục mới cho dự án cục bộ của bạn.
- Mở VS Code trong thư mục mới.
- Cài đặt tiện ích Firebase Data Connect từ Visual Studio Code Marketplace.
Thiết lập thư mục dự án
Để thiết lập dự án cục bộ, hãy khởi động thư mục dự án. Trong cửa sổ IDE, ở bảng điều khiển bên trái, hãy nhấp vào biểu tượng Firebase để mở giao diện người dùng của tiện ích Data Connect VS Code:
- Nhấp vào nút Đăng nhập bằng Google.
- Nhấp vào nút Kết nối một dự án Firebase rồi chọn dự án mà bạn đã tạo trước đó trong bảng điều khiển.
- Nhấp vào nút Run firebase init (Chạy lệnh firebase init).
Nhấp vào nút Start emulators (Khởi động trình mô phỏng).
Tạo giản đồ
Trong thư mục dự án Firebase, trong tệp /dataconnect/schema/schema.gql
, hãy bắt đầu xác định một giản đồ GraphQL về, chẳng hạn như các bài đánh giá phim.
Sử dụng Gemini Code Assist để tạo giản đồ
Cách tạo giản đồ ứng dụng đánh giá phim bằng Gemini Code Assist:
- Nhấp vào biểu tượng tiện ích Data Connect VS Code để mở thanh bên của tiện ích này.
- Nhấp vào Dùng thử Gemini với @FirebaseDataConnect. Cửa sổ trò chuyện Gemini Code Assist sẽ mở ra.
- Nhấp vào giao diện trò chuyện rồi bắt đầu nhập
@FirebaseDataConnect
để lọc các lệnh có liên quan. Chọn lệnh
/generate_schema
và tại dấu nhắc, hãy hoàn tất lệnh, yêu cầu Gemini tạo một giản đồ cho ứng dụng mà bạn đang phát triển.Ví dụ:
@FirebaseDataConnect /generate_schema I want to build an app to track movie reviews from multiple users
Sau vài giây, một giản đồ được đề xuất sẽ xuất hiện. Xem lại giản đồ.
Cách thêm mã vào
schema.gql
:- Nhấp vào nút Chèn vào cuối tệp
- Hoặc để chèn mã tại vị trí con trỏ, hãy nhấp vào nút + ở đầu câu trả lời trong cuộc trò chuyện.
Phim
Trong Data Connect, các trường GraphQL được liên kết với các cột. Phim có id
, title
, imageUrl
và genre
. Data Connect nhận dạng các kiểu dữ liệu nguyên thuỷ: String
và UUID
.
Sao chép đoạn mã sau hoặc xoá dấu nhận xét ở các dòng tương ứng trong tệp.
# By default, a UUID id key will be created by default as primary key.
# If you want to specify a primary key, say title, which you can do through
# the @table(key: "title") directive
type Movie @table {
id: UUID! @default(expr: "uuidV4()")
title: String!
imageUrl: String!
genre: String
}
MovieMetadata
Sao chép đoạn mã sau hoặc xoá dấu nhận xét ở các dòng tương ứng trong tệp.
# 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
}
Lưu ý rằng trường movie
được liên kết với một loại Movie
.
Data Connect hiểu rằng đây là mối quan hệ giữa Movie
và MovieMetadata
, đồng thời sẽ quản lý mối quan hệ này cho bạn.
Tìm hiểu thêm về giản đồ Data Connect trong tài liệu
Thêm dữ liệu vào bảng
Trong bảng điều khiển trình chỉnh sửa IDE, bạn sẽ thấy các nút CodeLens xuất hiện trên các loại GraphQL trong /dataconnect/schema/schema.gql
. Bạn có thể sử dụng nút Thêm dữ liệu và Chạy (Cục bộ) để thêm dữ liệu vào cơ sở dữ liệu cục bộ.
Cách thêm bản ghi vào bảng Movie
và MovieMetadata
:
- Trong
schema.gql
, hãy nhấp vào nút Thêm dữ liệu phía trên khai báo kiểuMovie
.
- Trong tệp
Movie_insert.gql
được tạo, hãy mã hoá cứng dữ liệu cho 3 trường. - Nhấp vào nút Run (Local) (Chạy (Cục bộ)).
- Lặp lại các bước trước đó để thêm một bản ghi vào bảng
MovieMetadata
, cung cấpid
của Phim trong trườngmovieId
, như được nhắc trong đột biếnMovieMetadata_insert
đã tạo.
Cách nhanh chóng xác minh dữ liệu đã được thêm:
- Quay lại
schema.gql
, hãy nhấp vào nút Đọc dữ liệu phía trên khai báo loạiMovie
. - Trong tệp
Movie_read.gql
kết quả, hãy nhấp vào nút Run (Local) (Chạy (Cục bộ)) để thực thi truy vấn.
Tìm hiểu thêm về các đột biến Data Connect trong tài liệu
Xác định truy vấn
Giờ đến phần thú vị hơn: xác định những truy vấn bạn sẽ cần trong ứng dụng của mình. Là một nhà phát triển, bạn quen với việc viết các truy vấn SQL thay vì truy vấn GraphQL, vì vậy, ban đầu bạn có thể cảm thấy hơi khác biệt.
Tuy nhiên, GraphQL ngắn gọn và an toàn về loại hơn nhiều so với SQL thô. Ngoài ra, tiện ích VS Code của chúng tôi giúp đơn giản hoá trải nghiệm phát triển, cả cho các truy vấn và đột biến.
Cách tạo truy vấn bằng Gemini Code Assist:
- Nhấp vào biểu tượng tiện ích Data Connect VS Code để mở thanh bên của tiện ích này.
- Nhấp vào Dùng thử Gemini với @FirebaseDataConnect. Cửa sổ trò chuyện Gemini Code Assist sẽ mở ra.
- Nhấp vào giao diện trò chuyện rồi bắt đầu nhập
@FirebaseDataConnect
để lọc các lệnh có liên quan. Chọn lệnh
/generate_operation
rồi hoàn tất lệnh tại dấu nhắc, yêu cầu Gemini tạo một truy vấn.Ví dụ:
@FirebaseDataConnect /generate_operation List all movies with titles start with "A".
Sau vài giây, một cụm từ tìm kiếm được đề xuất sẽ xuất hiện. Xem lại truy vấn.
Cách thêm mã vào
queries.gql
:- Nhấp vào nút Chèn vào cuối tệp
- Hoặc để chèn mã tại vị trí con trỏ, hãy nhấp vào nút + ở đầu câu trả lời trong cuộc trò chuyện.
Thực thi truy vấn bằng nút CodeLens ở gần.
Tìm hiểu thêm về các truy vấn Data Connect trong tài liệu
Tạo SDK và sử dụng chúng trong ứng dụng của bạn
Trong bảng điều khiển bên trái của IDE, hãy nhấp vào biểu tượng Firebase để mở giao diện người dùng của tiện ích Data Connect VS Code:
- Nhấp vào nút Thêm SDK vào ứng dụng.
Trong hộp thoại xuất hiện, hãy chọn một thư mục chứa mã cho ứng dụng của bạn. Mã SDK Data Connect sẽ được tạo và lưu ở đó.
Chọn nền tảng ứng dụng của bạn, sau đó lưu ý rằng mã SDK sẽ được tạo ngay trong thư mục bạn chọn.
Sử dụng SDK để gọi truy vấn từ một ứng dụng
Bạn có thể sử dụng SDK mà Data Connect đã tạo để triển khai một lệnh gọi đến truy vấn ListMovies
của bạn. Sau đó, bạn có thể thực thi truy vấn này cục bộ bằng trình mô phỏng Data Connect.
Web
- Thêm Firebase vào ứng dụng web của bạn.
Trong tệp chính của ứng dụng React:
- nhập SDK đã tạo
- cài đặt ứng dụng để kết nối với trình mô phỏng Data Connect
- gọi các phương thức Data Connect.
import React from 'react'; import ReactDOM from 'react-dom/client'; import { connectDataConnectEmulator } from 'firebase/data-connect'; // Generated queries. // Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@movie-app/movies'; const dataConnect = getDataConnect(connectorConfig); connectDataConnectEmulator(dataConnect, 'localhost', 9399); 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
- Thêm Firebase vào ứng dụng iOS của bạn.
Để sử dụng SDK đã tạo, hãy định cấu hình SDK đó làm phần phụ thuộc trong Xcode.
Trong thanh điều hướng trên cùng của Xcode, hãy chọn File (Tệp) > Add Package Dependencies (Thêm các phần phụ thuộc của gói) > Add Local (Thêm cục bộ), rồi chọn thư mục chứa
Package.swift
đã tạo.Trong uỷ quyền chính của ứng dụng:
- nhập SDK đã tạo
- cài đặt ứng dụng để kết nối với trình mô phỏng Data Connect
- gọi các phương thức Data Connect.
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 // 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) 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
- Thêm Firebase vào ứng dụng Android của bạn.
Để sử dụng SDK đã tạo, hãy định cấu hình Data Connect làm phần phụ thuộc trong Gradle.
Cập nhật
plugins
vàdependencies
trongapp/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") }
Trong hoạt động chính của ứng dụng:
- nhập SDK đã tạo
- cài đặt ứng dụng để kết nối với trình mô phỏng Data Connect
- gọi các phương thức Data Connect.
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 .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) } 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
- Thêm Firebase vào ứng dụng Flutter.
- Cài đặt CLI flutterfire
dart pub global activate flutterfire_cli
. - Chạy
flutterfire configure
. - Trong hàm chính của ứng dụng:
- nhập SDK đã tạo
- cài đặt ứng dụng để kết nối với trình mô phỏng Data Connect
- gọi các phương thức Data Connect.
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,
);
MoviesConnector.instance.dataConnect
.useDataConnectEmulator(Uri.base.host, 443, isSecure: true);
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();
}),
)
])));
}
}
Triển khai giản đồ và truy vấn của bạn vào quy trình sản xuất
Sau khi thiết lập cục bộ trên ứng dụng, giờ đây, bạn có thể triển khai lược đồ và trình kết nối lên đám mây. Bạn cần có một dự án theo gói Blaze để thiết lập một phiên bản Cloud SQL.
Chuyển đến phần Kết nối dữ liệu của bảng điều khiển Firebase rồi tạo một phiên bản Cloud SQL dùng thử miễn phí.
Trong Terminal được tích hợp trong IDE, hãy chạy
firebase init dataconnect
và chọn Region/Service ID mà bạn vừa tạo trên bảng điều khiển.Chọn "Y" khi được nhắc bằng thông báo "File dataconnect/dataconnect.yaml already exists, Overwrite?" (Tệp dataconnect/dataconnect.yaml đã tồn tại, Ghi đè?).
Trong cửa sổ IDE, trong giao diện người dùng Tiện ích VS Code, hãy nhấp vào nút Triển khai cho sản xuất.
Sau khi triển khai, hãy chuyển đến bảng điều khiển Firebase để xác minh rằng giản đồ, các thao tác và dữ liệu đã được tải lên đám mây. Bạn sẽ có thể xem giản đồ và chạy các thao tác trên bảng điều khiển. Phiên bản Cloud SQL cho PostgreSQL sẽ được cập nhật bằng giản đồ và dữ liệu được tạo đã triển khai cuối cùng.
Các bước tiếp theo
Xem lại dự án đã triển khai và khám phá các công cụ khác:
- Thêm dữ liệu vào cơ sở dữ liệu, kiểm tra và sửa đổi giản đồ, đồng thời theo dõi dịch vụ Data Connect trong bảng điều khiển Firebase.
Xem thêm thông tin trong tài liệu. Ví dụ: vì bạn đã hoàn tất hướng dẫn bắt đầu nhanh:
- Khám phá thêm các công cụ hỗ trợ AI và hướng dẫn để giúp bạn tạo lược đồ, truy vấn và đột biến. Hướng dẫn về tính năng hỗ trợ AI đề cập đến cách thiết lập và sử dụng máy chủ MCP của chúng tôi với các IDE và các phương pháp hay nhất để viết câu lệnh.
- Tìm hiểu thêm về việc phát triển lược đồ, truy vấn và đột biến
- Tìm hiểu về cách tạo SDK phía máy khách và gọi các truy vấn cũng như đột biến từ mã phía máy khách cho web, Android và iOS, cũng như Flutter.