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