Firestore là một giải pháp cơ sở dữ liệu có thể mở rộng hiệu quả để đồng bộ hoá dữ liệu trên các ứng dụng web.
Đối với nhiều ứng dụng, tính năng hỗ trợ chế độ ngoại tuyến được quản lý của Firestore đặc biệt quan trọng, cho phép bạn xây dựng các ứng dụng thích ứng hoạt động bất kể độ trễ mạng hoặc kết nối Internet. Tuy nhiên, các SDK có nhiều tính năng sẽ có kích thước lớn. Firebase cung cấp gì cho các ứng dụng chỉ cần sử dụng các thao tác tạo, đọc, cập nhật và xoá cơ bản và không cần hỗ trợ ngoại tuyến được quản lý?
Giải pháp: Firestore Lite
Firestore Lite là một SDK Firestore độc lập, gọn nhẹ chỉ dành cho REST, hỗ trợ các lần tìm nạp tài liệu, thực thi truy vấn và cập nhật tài liệu, ở một phần kích thước SDK Web thông thường. Firestore Lite bỏ qua việc bù độ trễ, lưu vào bộ nhớ đệm khi không có kết nối mạng, tiếp tục truy vấn và trình nghe tổng quan nhanh. Tuy nhiên, đối với một số trường hợp sử dụng cụ thể, việc giảm kích thước thư viện và thời gian khởi động sẽ đem lại một sự đánh đổi lớn.
Nhập Firestore Lite
Bạn có thể sử dụng Firestore Lite thông qua npm trong SDK mô-đun. Do đó, lớp này hoàn toàn mô-đun và có thể loại bỏ cây.
Kiểu nhập sau đây được hỗ trợ.
import { initializeApp } from "firebase/app";
import {
getFirestore,
getDoc,
updateDoc
} from 'firebase/firestore/lite';
Các tính năng API mà Firestore Lite không hỗ trợ
Đối với kích thước và tốc độ, Firestore Lite sẽ bỏ qua các tính năng sau trong SDKFirestore tiêu chuẩn:
- Trình xử lý sự kiện DocumentSnapshot. Phương thức
onSnapshot
và các đối tượngDocumentChange
,SnapshotListenerOptions
,SnapshotMetadata
,SnapshotOptions
vàUnsubscribe
không được đưa vào. - Trình trợ giúp liên tục. Các phương thức
enableIndexedDBPersistence
,enableMultiTabIndexedDbPersistence
vàclearIndexedDbPersistence
không được đưa vào. - Gói Firestore. Phương thức
loadBundle
và các phương thức liên quan, cũng như các đối tượngLoadBundleTask
vàLoadBundleTaskProgress
sẽ không được đưa vào.
Triển khai các lệnh tìm nạp, truy vấn và cập nhật tài liệu
Sau khi nhập Firestore Lite, bạn có thể thực hiện tất cả các lệnh gọi nhận và cập nhật API quen thuộc. Các trường hợp sử dụng để thêm dữ liệu và nhận dữ liệu đều áp dụng.
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');
Trường hợp nên sử dụng Firestore Lite
Có thể bạn sẽ gặp khó khăn khi quyết định thời điểm ngừng sử dụng các tính năng lưu trữ ngoại tuyến và lưu vào bộ nhớ đệm của SDK Firestore tiêu chuẩn. Bạn nên hiểu rõ những tính năng này trước khi quyết định từ bỏ để đổi lấy mức hao tổn thấp hơn của Firestore Lite. Nhìn chung, hãy cân nhắc các yếu tố sau đây khi quyết định có dùng Firestore Lite hay không:
- Trạng thái trực tuyến – Firestore Lite phù hợp với những ứng dụng không cần cập nhật trực tiếp và có kết nối.
- Giới hạn về kích thước – Firestore Lite rất phù hợp nếu bạn muốn giảm kích thước tổng thể của gói JavaScript.