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