SDK ของไคลเอ็นต์ Firebase Data Connect ช่วยให้คุณเรียกใช้การค้นหาและการดัดแปลงฝั่งเซิร์ฟเวอร์ได้โดยตรงจากแอป Firebase คุณสามารถสร้าง SDK ของไคลเอ็นต์ที่กําหนดเองควบคู่ไปกับการออกแบบสคีมา การค้นหา และการดัดแปลงที่จะติดตั้งใช้งานในบริการ Data Connect จากนั้นจึงผสานรวมเมธอดจาก SDK นี้เข้ากับตรรกะของไคลเอ็นต์
ดังที่ได้กล่าวไว้ก่อนหน้านี้ โปรดทราบว่าData Connect โค้ดไคลเอ็นต์ไม่ได้ส่งการค้นหาและการดัดแปลง และไม่ได้ดำเนินการบนเซิร์ฟเวอร์ แต่เมื่อทำให้ใช้งานได้แล้ว ระบบจะเก็บการดำเนินการ Data Connect ไว้ในเซิร์ฟเวอร์ เช่น Cloud Functions ซึ่งหมายความว่าคุณต้องทําการเปลี่ยนแปลงฝั่งไคลเอ็นต์ที่เกี่ยวข้องเพื่อไม่ให้ผู้ใช้เดิมได้รับผลกระทบ (เช่น ในแอปเวอร์ชันเก่า)
ด้วยเหตุนี้ Data Connect จึงมอบสภาพแวดล้อมสำหรับนักพัฒนาซอฟต์แวร์และเครื่องมือที่ช่วยให้คุณสร้างต้นแบบของสคีมา คำค้นหา และการกลายพันธุ์ที่เซิร์ฟเวอร์ใช้งานได้ นอกจากนี้ ยังสร้าง SDK ฝั่งไคลเอ็นต์โดยอัตโนมัติขณะที่คุณสร้างต้นแบบด้วย
เมื่ออัปเดตบริการและแอปไคลเอ็นต์ซ้ำแล้ว การอัปเดตทั้งฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์จะพร้อมใช้งาน
สร้าง Flutter SDK
เช่นเดียวกับโปรเจ็กต์ Firebase ส่วนใหญ่ การทำงานกับโค้ดFirebase Data Connectไคลเอ็นต์จะทําในไดเรกทอรีโปรเจ็กต์ในเครื่อง ทั้งส่วนขยาย Data Connect ใน VS Code และ Firebase CLI เป็นเครื่องมือที่สำคัญในเครื่องสำหรับสร้างและจัดการโค้ดไคลเอ็นต์
ตัวเลือกการสร้าง SDK จะเชื่อมโยงกับรายการต่างๆ ในdataconnect.yaml
ไฟล์ที่สร้างเมื่อคุณเริ่มต้นโปรเจ็กต์
เริ่มต้นการสร้าง SDK
ในconnector.yaml
ให้เพิ่ม outputDir
, package
และ (สําหรับ SDK เว็บ)
packageJsonDir
connectorId: movies
generate:
dartSdk:
outputDir: ../../lib/generated # Feel free to change this to a different path
package: movies
outputDir
ระบุตำแหน่งที่ SDK ที่สร้างขึ้นควรแสดงผล เส้นทางนี้สัมพันธ์กับไดเรกทอรีที่มีไฟล์ connector.yaml
อยู่
คุณระบุเส้นทางแบบสัมบูรณ์ไปยัง outputDir
ก็ได้ (ไม่บังคับ)
package
ระบุชื่อแพ็กเกจ
อัปเดต SDK ขณะสร้างต้นแบบ
หากคุณกำลังสร้างต้นแบบแบบอินเทอร์แอกทีฟด้วยส่วนขยาย Data Connect VS Code และโปรแกรมจำลอง Data Connect ระบบจะสร้างและอัปเดตไฟล์ต้นฉบับ SDK โดยอัตโนมัติขณะที่คุณแก้ไขไฟล์ .gql
ที่กำหนดสคีมา การค้นหา และการกลายพันธุ์ ซึ่งอาจเป็นฟีเจอร์ที่มีประโยชน์ในเวิร์กโฟลว์การโหลด (ซ้ำ) อย่างรวดเร็ว
.gql
และมีการอัปเดตแหล่งที่มาของ SDK โดยอัตโนมัติได้ด้วย
หรือใช้ CLI เพื่อสร้าง SDK ใหม่เมื่อใดก็ตามที่ไฟล์ .gql มีการเปลี่ยนแปลง ดังนี้
firebase dataconnect:sdk:generate --watch
สร้าง SDK สำหรับการผสานรวมและสำหรับรุ่นที่ใช้งานจริง
ในบางกรณี เช่น การเตรียมแหล่งที่มาของโปรเจ็กต์เพื่อส่งเข้ารับการทดสอบ CI คุณสามารถเรียกใช้ Firebase CLI เพื่ออัปเดตแบบเป็นกลุ่มได้
ในกรณีเหล่านี้ ให้ใช้ firebase dataconnect:sdk:generate
ตั้งค่ารหัสไคลเอ็นต์
เริ่มต้นแอป Data Connect
ก่อนอื่น ให้เริ่มต้นแอปโดยใช้วิธีการตั้งค่า Firebase มาตรฐาน
จากนั้นติดตั้งปลั๊กอิน Data Connect โดยทำดังนี้
flutter pub add firebase_data_connect
เริ่มต้น Data Connect Flutter SDK
เริ่มต้นอินสแตนซ์ Data Connect โดยใช้ข้อมูลที่คุณใช้ตั้งค่าการเชื่อมต่อข้อมูล (มีทั้งหมดในแท็บการเชื่อมต่อข้อมูลของคอนโซล Firebase)
นำเข้าไลบรารี
ในการเริ่มต้นรหัสไคลเอ็นต์ คุณต้องนําเข้า 2 ชุด ได้แก่ การนําเข้าData Connectทั่วไปและการนําเข้า SDK ที่สร้างขึ้นโดยเฉพาะ
// general imports
import 'package:firebase_data_connect/firebase_data_connect.dart';
// generated queries and mutations from SDK
import 'generated/movies.dart';
สร้างต้นแบบและทดสอบแอป Flutter
เครื่องมือสำหรับลูกค้าเพื่อใช้โปรแกรมจำลองในเครื่อง
คุณสามารถใช้โปรแกรมจำลอง Data Connect ได้จากส่วนขยาย Data Connect ใน VS Code หรือจาก CLI
เครื่องมือวัดผลแอปเพื่อเชื่อมต่อกับโปรแกรมจําลองจะเหมือนกันทั้ง 2 สถานการณ์
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();
หากต้องการเปลี่ยนไปใช้ทรัพยากรเวอร์ชันที่ใช้งานจริง ให้ยกเลิกการคอมเมนต์บรรทัดสำหรับการเชื่อมต่อกับโปรแกรมจำลอง
ใช้การค้นหาฝั่งไคลเอ็นต์
โค้ดที่สร้างขึ้นจะมีข้อมูลอ้างอิงการค้นหาที่กําหนดไว้ล่วงหน้าอยู่แล้ว เพียงนําเข้าและเรียกใช้ execute
ในไฟล์
import 'generated/movies.dart';
await MoviesConnector.instance.listMovies().execute();
วิธีการค้นหาของ SDK ในการเรียกใช้
ตัวอย่างการใช้ฟังก์ชันแป้นพิมพ์ลัดการทำงานมีดังนี้
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();
}
ช่องที่ไม่บังคับ
การค้นหาบางรายการอาจมีช่องที่ไม่บังคับ ในกรณีเหล่านี้ Flutter SDK จะแสดงเมธอดของเครื่องมือสร้าง และต้องตั้งค่าแยกต่างหาก
เช่น ฟิลด์ rating
ไม่บังคับเมื่อเรียกใช้ createMovie
คุณจึงต้องระบุฟิลด์ดังกล่าวในฟังก์ชันบิลเดอร์
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi"}).rating(5).execute();
สมัครรับการเปลี่ยนแปลง
คุณสามารถติดตามการเปลี่ยนแปลง (ซึ่งจะอัปเดตทุกครั้งที่คุณเรียกใช้การค้นหา)
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`
ใช้การกลายพันธุ์ฝั่งไคลเอ็นต์
คุณสามารถเข้าถึงการกลายพันธุ์ได้เช่นเดียวกับการค้นหา
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
ประเภทข้อมูลใน Dart SDK
เซิร์ฟเวอร์ Data Connect แสดงประเภทข้อมูล GraphQL ทั่วไป โดยค่าเหล่านี้จะแสดงใน SDK ดังนี้
ประเภทการเชื่อมต่อข้อมูล | Dart |
---|---|
การประทับเวลา | firebase_data_connect.Timestamp |
Int (32 บิต) | int |
วันที่ | DateTime |
UUID | สตริง |
Int64 | int |
ทศนิยม | double |
บูลีน | บูลีน |
เวลาใดก็ได้ | firebase_data_connect.AnyValue |