Firestore เป็นโซลูชันฐานข้อมูลที่ปรับขนาดได้ดีเพื่อซิงค์ข้อมูลในไคลเอ็นต์เว็บ
การรองรับการใช้งานออฟไลน์ที่มีการจัดการของ Firestore มีความสำคัญอย่างยิ่งสำหรับแอปจำนวนมาก ซึ่งช่วยให้คุณสร้างแอปที่ตอบสนองได้ดีซึ่งทำงานได้โดยไม่คำนึงถึงเวลาในการตอบสนองของเครือข่ายหรือการเชื่อมต่ออินเทอร์เน็ต แต่ SDK ที่มีฟีเจอร์หลากหลายก็มีขนาดใหญ่ตามไปด้วย Firebase มีอะไรให้บ้างสำหรับแอปที่ต้องการใช้เฉพาะการดำเนินการสร้าง อ่าน อัปเดต และลบขั้นพื้นฐาน และไม่ต้องการการสนับสนุนแบบออฟไลน์ที่มีการจัดการ
โซลูชัน: Firestore Lite
Firestore Lite เป็น SDK ของ Firestore แบบ REST เท่านั้นที่มีน้ำหนักเบาและทำงานแบบสแตนด์อโลน ซึ่งรองรับการดึงข้อมูลเอกสารรายการเดียว การดำเนินการค้นหา และการอัปเดตเอกสาร โดยมีขนาดเพียงเศษเสี้ยวของ SDK ของเว็บปกติ Firestore Lite จะไม่รวมการชดเชยเวลาในการตอบสนอง การแคชแบบออฟไลน์ การกลับมาทำงานต่อของคำค้นหา และ Listener ของสแนปชอต แต่สำหรับ Use Case บางอย่าง การลดขนาดไลบรารีและเวลาเริ่มต้นระบบก็ถือว่าคุ้มค่า
นำเข้า Firestore Lite
Firestore Lite พร้อมใช้งานผ่าน npm โดยเป็นส่วนหนึ่งของ SDK แบบโมดูล จึงเป็นแบบโมดูลาร์และ Tree-shakeable อย่างสมบูรณ์
ระบบรองรับรูปแบบการนำเข้าต่อไปนี้
import { initializeApp } from "firebase/app";
import {
getFirestore,
getDoc,
updateDoc
} from 'firebase/firestore/lite';
ฟีเจอร์ API ที่ Firestore Lite ไม่รองรับ
Firestore Lite จะละเว้นฟีเจอร์ต่อไปนี้จาก Firestore SDK มาตรฐานเพื่อลดขนาดและเพิ่มความเร็ว
- เครื่องจัดการเหตุการณ์ DocumentSnapshot ไม่รวมเมธอด
onSnapshotและออบเจ็กต์DocumentChange,SnapshotListenerOptions,SnapshotMetadata,SnapshotOptionsและUnsubscribe - ตัวช่วยด้านความต่อเนื่อง ไม่รวมเมธอด
enableIndexedDBPersistence,enableMultiTabIndexedDbPersistenceและclearIndexedDbPersistence - แพ็กเกจ Firestore ไม่รวมเมธอด
loadBundleและเมธอดที่เกี่ยวข้อง รวมถึงออบเจ็กต์LoadBundleTaskและLoadBundleTaskProgress
ใช้การดึงข้อมูล การค้นหา และการอัปเดตเอกสาร
หลังจากนำเข้า Firestore Lite แล้ว คุณจะเรียกใช้ API get และ update ที่คุ้นเคยทั้งหมดได้ กรณีการใช้งานสำหรับการเพิ่มข้อมูลและการรับข้อมูลจะมีผลทั้งหมด
import {
getFirestore,
getDoc,
updateDoc,
doc
} from '@firebase/firestore/lite';
const firestore = getFirestore(app);
const docRef = doc(firestore, 'collection/doc');
const docSnap = await getDoc(docRef);
await updateDoc(docRef, "field", 'value');
กรณีที่ควรใช้ Firestore Lite
การตัดสินใจว่าจะเลิกใช้ฟีเจอร์การคงอยู่แบบออฟไลน์และการแคชของ SDK มาตรฐานของ Firestore เมื่อใดอาจเป็นเรื่องยาก คุณควรทำความเข้าใจฟีเจอร์เหล่านี้ก่อนตัดสินใจแลกกับค่าใช้จ่ายที่ต่ำกว่าของ Firestore Lite โดยทั่วไป ให้พิจารณาปัจจัยเหล่านี้เมื่อตัดสินใจว่าจะใช้ Firestore Lite หรือไม่
- สถานะออนไลน์ - Firestore Lite เหมาะสำหรับแอปที่ไม่ต้องการข้อมูลอัปเดตแบบเรียลไทม์และมีการเชื่อมต่อ
- ข้อจำกัดด้านขนาด - Firestore Lite เหมาะอย่างยิ่งหากคุณต้องการลดขนาดแพ็กเกจ JavaScript โดยรวม