ส่วนขยาย Firestore Bundle Builder (firestore-bundle-builder) จะติดตั้งใช้งาน
ฟังก์ชัน HTTP ที่แสดงผลชุดข้อมูล Cloud Firestore คุณกำหนดชุดข้อมูลในเอกสาร Firestore และส่วนขยายจะแสดงผลชุดข้อมูลไฟล์ไบนารีแบบคงที่ผ่านคำขอ HTTP พร้อมกับกลไกการแคชในตัวต่างๆ โดยใช้ CDN ของโฮสติ้งของ Firebase หรือ Cloud Storage เมื่อไม่มีชุดข้อมูลหรือชุดข้อมูลที่มีอยู่หมดอายุแล้ว ฟังก์ชันนี้จะสร้างและแคชชุดข้อมูลใหม่ตามความต้องการ
หากต้องการใช้ส่วนขยายนี้ คุณต้องสร้างข้อกำหนดชุดข้อมูลอย่างน้อย 1 รายการใน Firestore ก่อนโดยใช้แดชบอร์ดผู้ดูแลระบบของส่วนขยาย ข้อกำหนดชุดข้อมูลคือวิธีที่คุณกำหนดคําค้นหาที่มีชื่อ (คําค้นหาคอลเล็กชันและเส้นทางเอกสารที่เฉพาะเจาะจงเพื่อเพิ่มลงในชุดข้อมูล)
นอกจากนี้ คุณยังกำหนดพารามิเตอร์ที่ต้องการใช้ในคําค้นหาที่มีชื่อภายในข้อกำหนดชุดข้อมูลได้ด้วย คุณตั้งค่าพารามิเตอร์เหล่านี้โดยใช้พารามิเตอร์การค้นหา URL เมื่อเรียกฟังก์ชัน HTTP
ลิงก์ด้านบนมีวิธีการบางอย่างเพื่อให้คุณเรียกใช้ยูทิลิตี้ของผู้ดูแลระบบในเครื่องได้ เมื่อตั้งค่าเว็บแอปแล้ว ให้ไปที่ localhost:3000 เพื่อสร้างข้อกำหนดโดยใช้ UI ดังนี้

การสร้างและแสดงผลชุดข้อมูล
เมื่อติดตั้งส่วนขยายและสร้างข้อกำหนดชุดข้อมูลแล้ว คุณจะเริ่มสร้างและแสดงผลชุดข้อมูลได้โดยการเรียกปลายทาง HTTP ที่ส่วนขยายมีให้
ระบบอาจแสดงผลชุดข้อมูลที่ขอจากแคชของไคลเอ็นต์ แคชของโฮสติ้งของ Firebase หรือไฟล์ Cloud Storage ทั้งนี้ขึ้นอยู่กับข้อกำหนดชุดข้อมูล เมื่อแคชทั้งหมดหมดอายุแล้ว คำขอแสดงผลใหม่จะทริกเกอร์คําค้นหา Firestore เพื่อสร้างชุดข้อมูลตามความต้องการ
คุณใช้ประโยชน์จากความสามารถของ CDN ของโฮสติ้งของ Firebase ได้โดยการตั้งค่าเว็บไซต์โฮสติ้งของ Firebase ที่ชี้ไปยังฟังก์ชันแสดงผลโดยใช้กฎการเขียนซ้ำ CDN จะจำลองชุดข้อมูลในเซิร์ฟเวอร์ต่างๆ มากมาย เพื่อให้ผู้ใช้โหลดชุดข้อมูลจากเซิร์ฟเวอร์ที่ใกล้ที่สุดได้โดยอัตโนมัติ ซึ่งเป็นวิธีที่แนะนำ
หากต้องการตั้งค่านี้ในโฮสติ้งของ Firebase ให้สร้างหรือแก้ไขไฟล์ firebase.json ที่มีเนื้อหาต่อไปนี้ แล้ว ติดตั้งใช้งานเว็บไซต์
{
"hosting": {
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "/bundles/*",
"function": "ext-firestore-bundle-builder-serve"
}
]
}
}
เมื่อติดตั้งใช้งานแล้ว คุณจะเข้าถึงชุดข้อมูลจาก CDN ได้โดยใช้ URL ของเว็บไซต์ เช่น https://your-site-url.com/bundles/:bundleId
หรือคุณจะกำหนดค่าส่วนขยายให้แคชข้อมูลใน Cloud Storage ก็ได้หากไม่ต้องการใช้โฮสติ้งของ Firebase ในกรณีนี้ คุณจะต้องเรียกฟังก์ชัน HTTP ที่ติดตั้งใช้งานโดยตรงเพื่อสร้างชุดข้อมูล
การผสานรวมไคลเอ็นต์
จากนั้นคุณจะใช้ชุดข้อมูลกับ loadBundle API ของ Cloud Firestore SDK ได้ ก่อนอื่น คุณต้องดาวน์โหลดชุดข้อมูล แล้วส่งไปยัง SDK ตัวอย่างเช่น
import { loadBundle } from "firebase/firestore";
// Download the bundle from the Firebase Hosting CDN:
const bundle = await fetch("/bundles/:bundleId");
// If not using a CDN, download the bundle directly:
// const bundle = await fetch('https://<location>-<project-id>.cloudfunctions.net/ext-firestore-bundle-builder-serve/:bundleId');
await loadBundle(bundle);
เมื่อโหลดแล้ว คุณจะใช้ข้อมูลจากชุดข้อมูลได้ดังนี้
หากคุณระบุอาร์เรย์ของเส้นทางเอกสารเมื่อกำหนดชุดข้อมูล คุณจะรับข้อมูลเอกสารในไคลเอ็นต์ผ่านชุดข้อมูลได้ดังนี้
import { getFirestore, doc, getDocFromCache } from "firebase/firestore";
// Bundle Document IDs: ['users/92x1NgSWYKUC4AG4s2nHGMR2ikZ2']
const ref = doc(getFirestore(), "users/92x1NgSWYKUC4AG4s2nHGMR2ikZ2");
const snapshot = await getDocFromCache(ref);
หากคุณระบุคําค้นหา คุณจะใช้ namedQuery API เพื่อเรียกใช้คําค้นหาจากชุดข้อมูลได้ดังนี้
import { getFirestore, namedQuery } from "firebase/firestore";
const query = await namedQuery(getFirestore(), "queryId");
const snapshot = await getDocsFromCache(query);
ระบบจะกำหนดรหัสคําค้นหาเป็นคีย์ของคำจำกัดความพร็อพเพอร์ตี้ queries แต่ละรายการ (ดูด้านล่าง)