Firestore เป็นโซลูชันฐานข้อมูลที่ปรับขนาดได้ดีซึ่งช่วยให้ข้อมูลซิงค์กันในไคลเอ็นต์เว็บ
การรองรับแบบออฟไลน์ที่มีการจัดการของ Firestore มีความสำคัญอย่างยิ่งสำหรับแอปจำนวนมาก เนื่องจากช่วยให้คุณสร้างแอปที่ตอบสนองได้ดีซึ่งทำงานได้ไม่ว่าจะมีเวลาในการตอบสนองของเครือข่ายหรือ การเชื่อมต่ออินเทอร์เน็ตหรือไม่ก็ตาม แต่ SDK ที่มีฟีเจอร์มากมายก็มีขนาดใหญ่ Firebase มีอะไรให้สำหรับแอปที่ต้องการใช้เฉพาะการดำเนินการสร้าง อ่าน อัปเดต และลบพื้นฐาน และไม่ต้องการการสนับสนุนแบบออฟไลน์ที่มีการจัดการ
โซลูชัน: Firestore Lite
Firestore Lite เป็น SDK ของ Firestore แบบสแตนด์อโลนที่มีน้ำหนักเบาและใช้ REST เท่านั้น ซึ่ง รองรับการดึงข้อมูลเอกสารรายการเดียว การเรียกใช้คําค้นหา และการอัปเดตเอกสาร โดยมีขนาด เล็กกว่า SDK บนเว็บปกติ Firestore Lite จะไม่มีการชดเชยเวลาในการตอบสนอง การแคชแบบออฟไลน์ การค้นหาต่อ และเครื่องมือฟังสแนปชอต แต่ในกรณีการใช้งานบางอย่าง การลดขนาดไลบรารีและเวลาเริ่มต้นจะทำให้เกิดการแลกเปลี่ยนที่ยอดเยี่ยม
นำเข้า Firestore Lite
Firestore Lite พร้อมใช้งานผ่าน npm ซึ่งเป็นส่วนหนึ่งของ SDK แบบแยกส่วน จึงเป็นแบบแยกส่วนและสามารถทำการ Tree Shaking ได้อย่างเต็มที่
ระบบรองรับรูปแบบการนำเข้าต่อไปนี้
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
การตัดสินใจว่าจะเลิกใช้ฟีเจอร์การแคชและการคงอยู่แบบออฟไลน์ของ Firestore SDK มาตรฐานเมื่อใดอาจเป็นเรื่องยาก คุณควรทำความเข้าใจฟีเจอร์เหล่านี้ ก่อนตัดสินใจแลกกับค่าใช้จ่ายที่ต่ำกว่าของ Firestore Lite โดยทั่วไป ให้พิจารณาปัจจัยต่อไปนี้เมื่อตัดสินใจว่าจะใช้ Firestore Lite หรือไม่
- สถานะออนไลน์ - Firestore Lite เหมาะสำหรับแอปที่ไม่จำเป็นต้องมีการอัปเดตแบบเรียลไทม์ และมีการเชื่อมต่อ
- ข้อจำกัดด้านขนาด - Firestore Lite เหมาะอย่างยิ่งหากคุณต้องการลด ขนาดกลุ่ม JavaScript โดยรวม