SDK ứng dụng Firebase Data Connect cho phép bạn gọi các truy vấn và độ biến đổi phía máy chủ trực tiếp từ ứng dụng Firebase. Bạn tạo một SDK ứng dụng tuỳ chỉnh song song trong quá trình thiết kế giản đồ, truy vấn và đột biến mà bạn triển khai cho dịch vụ Data Connect của mình. Sau đó, bạn tích hợp các phương thức từ SDK này vào logic ứng dụng.
Như đã đề cập ở nơi khác, điều quan trọng cần lưu ý là các truy vấn và đột biến Data Connect không được mã ứng dụng gửi và thực thi trên máy chủ. Thay vào đó, khi được triển khai, các thao tác Data Connect sẽ được lưu trữ trên máy chủ như Chức năng trên đám mây. Điều này có nghĩa là bạn cần triển khai các thay đổi tương ứng ở phía máy khách để tránh làm gián đoạn người dùng hiện tại (ví dụ: trên các phiên bản ứng dụng cũ).
Đó là lý do Data Connect cung cấp cho bạn môi trường và công cụ dành cho nhà phát triển giúp bạn tạo nguyên mẫu cho giản đồ, truy vấn và các đột biến do máy chủ triển khai. Nền tảng này cũng tự động tạo SDK phía máy khách trong khi bạn tạo nguyên mẫu.
Khi bạn lặp lại các bản cập nhật cho dịch vụ và ứng dụng khách, cả bản cập nhật phía máy chủ và phía ứng dụng khách đều sẵn sàng để triển khai.
Tạo SDK Flutter
Giống như hầu hết các dự án Firebase, công việc trên mã ứng dụng Firebase Data Connect diễn ra trong thư mục dự án cục bộ. Cả tiện ích Data Connect VS Code và CLI Firebase đều là các công cụ cục bộ quan trọng để tạo và quản lý mã ứng dụng.
Các tuỳ chọn tạo SDK được liên kết với một số mục trong tệp dataconnect.yaml
được tạo khi bạn khởi chạy dự án.
Khởi tạo quá trình tạo SDK
Trongconnector.yaml
, hãy thêm outputDir
, package
và (đối với SDK web) packageJsonDir
.
connectorId: movies
generate:
dartSdk:
outputDir: ../../lib/generated # Feel free to change this to a different path
package: movies
outputDir
chỉ định vị trí đầu ra SDK được tạo. Đường dẫn này tương ứng với thư mục chứa chính tệp connector.yaml
.
Nếu muốn, bạn có thể cung cấp một đường dẫn tuyệt đối đến outputDir
.
package
chỉ định tên gói.
Cập nhật SDK trong khi tạo bản nguyên mẫu
Nếu bạn đang tạo nguyên mẫu có tính tương tác bằng tiện ích Data Connect VS Code và trình mô phỏng Data Connect của tiện ích này, thì các tệp nguồn SDK sẽ tự động được tạo và cập nhật trong khi bạn sửa đổi các tệp .gql
xác định giản đồ, truy vấn và độ biến đổi. Đây có thể là một tính năng hữu ích trong quy trình tải lại (nóng).
.gql
và cũng tự động cập nhật các nguồn SDK.
Ngoài ra, bạn có thể sử dụng CLI để tạo lại SDK bất cứ khi nào tệp .gql thay đổi:
firebase dataconnect:sdk:generate --watch
Tạo SDK để tích hợp và phát hành chính thức
Trong một số trường hợp, chẳng hạn như chuẩn bị nguồn dự án để gửi cho các bài kiểm thử CI, bạn có thể gọi CLI Firebase để cập nhật hàng loạt.
Trong những trường hợp này, hãy sử dụng firebase dataconnect:sdk:generate
.
Thiết lập mã ứng dụng
Khởi chạy ứng dụng Data Connect
Trước tiên, hãy khởi chạy ứng dụng của bạn bằng cách làm theo hướng dẫn thiết lập Firebase tiêu chuẩn.
Sau đó, cài đặt trình bổ trợ Data Connect:
flutter pub add firebase_data_connect
Khởi chạy SDK Flutter Data Connect
Khởi chạy thực thể Data Connect bằng thông tin bạn đã sử dụng để thiết lập Data Connect (tất cả đều có trong thẻ Data Connect của bảng điều khiển Firebase).
Nhập thư viện
Có hai nhóm lệnh nhập cần thiết để khởi chạy mã ứng dụng, các lệnh nhập Data Connect chung và các lệnh nhập SDK được tạo cụ thể.
// general imports
import 'package:firebase_data_connect/firebase_data_connect.dart';
// generated queries and mutations from SDK
import 'generated/movies.dart';
Tạo nguyên mẫu và kiểm thử ứng dụng Flutter
Đo lường ứng dụng để sử dụng trình mô phỏng cục bộ
Bạn có thể sử dụng trình mô phỏng Data Connect, cho dù là từ tiện ích Data Connect VS Code hay từ CLI.
Việc đo lường ứng dụng để kết nối với trình mô phỏng là như nhau cho cả hai trường hợp.
import 'package:firebase_data_connect/firebase_data_connect.dart';
import 'generated/movies.dart';
MoviesConnector.instance.dataConnect
.useDataConnectEmulator('127.0.0.1', 9399);
// Make calls from your app
QueryRef<ListMoviesData, void> ref = MoviesConnector.instance.listMovies.ref();
Để chuyển sang tài nguyên chính thức, hãy chú thích các dòng để kết nối với trình mô phỏng.
Sử dụng truy vấn ở phía máy khách
Mã được tạo sẽ đi kèm với các Tham chiếu truy vấn được xác định trước. Bạn chỉ cần nhập và gọi execute
trên các lớp đó.
import 'generated/movies.dart';
await MoviesConnector.instance.listMovies().execute();
Gọi các phương thức truy vấn SDK
Dưới đây là ví dụ về cách sử dụng các hàm lối tắt thao tác này:
import 'generated/movies.dart';
function onBtnClick() {
// This will call the generated Dart from the CLI and then make an HTTP request to the server.
MoviesConnector.instance.listMovies().execute().then(data => showInUI(data)); // == MoviesConnector.instance.listMovies().ref().execute();
}
Trường không bắt buộc
Một số truy vấn có thể có các trường không bắt buộc. Trong những trường hợp này, SDK Flutter sẽ hiển thị một phương thức trình tạo và bạn sẽ phải đặt riêng phương thức này.
Ví dụ: trường rating
là không bắt buộc khi gọi createMovie
, vì vậy, bạn cần cung cấp trường này trong hàm tạo.
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi"}).rating(5).execute();
Đăng ký nhận thông báo về các thay đổi
Bạn có thể đăng ký nhận thông báo về các thay đổi (sẽ cập nhật bất cứ khi nào bạn thực thi truy vấn).
QueryRef<ListMoviesData, void> listRef = MoviesConnector.instance.listMovies().ref();
// subscribe will immediately invoke the query if no execute was called on it previously.
listRef.subscribe().listen((data) {
updateUIWithMovies(data.movies);
});
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
await listRef.execute(); // will update the subscription above`
Sử dụng tính năng đột biến ở phía máy khách
Đột biến có thể truy cập được theo cách tương tự như truy vấn.
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
Các loại dữ liệu trong SDK Dart
Máy chủ Data Connect đại diện cho các loại dữ liệu GraphQL phổ biến. Các giá trị này được trình bày trong SDK như sau.
Loại kết nối dữ liệu | Dart |
---|---|
Dấu thời gian | firebase_data_connect.Timestamp |
Int (32 bit) | int |
Ngày | DateTime |
mã nhận dạng duy nhất (UUID) | chuỗi |
Int64 | int |
Nổi | double |
Boolean | bool |
Bất kỳ | firebase_data_connect.AnyValue |