Firestore là một giải pháp cơ sở dữ liệu có khả năng mở rộng tốt để đồ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, cho phép bạn xây dựng các ứng dụng phản hồi hoạt động bất kể độ trễ của mạng hoặc khả năng kết nối Internet. Tuy nhiên, các SDK già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 cơ bản như tạo, đọc, cập nhật và xoá, đồng thời không cần tính năng 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ẹ và chỉ dành cho REST, hỗ trợ tìm nạp một tài liệu, 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ỏ kích thước của SDK Web thông thường. Firestore Lite bỏ qua tính năng bù độ trễ, lưu vào bộ nhớ đệm ngoại tuyến, tiếp tục truy vấn và trình nghe ảnh chụp nhanh, nhưng đố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ẽ mang lại điểm đánh đổi lớn.
Nhập Firestore Lite
Firestore Lite có sẵn thông qua npm như một phần của SDK mô-đun. Do đó, SDK 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 mà Firestore Lite không hỗ trợ
Để có kích thước và tốc độ, Firestore Lite bỏ qua các tính năng sau trong SDK Firestore tiêu chuẩn:
- Trình xử lý sự kiện DocumentSnapshot. Không bao gồm phương thức
onSnapshotvà các đối tượngDocumentChange,SnapshotListenerOptions,SnapshotMetadata,SnapshotOptionsvàUnsubscribe. - Trình trợ giúp về tính năng duy trì. Không bao gồm các phương thức
enableIndexedDBPersistence,enableMultiTabIndexedDbPersistencevàclearIndexedDbPersistence. - Gói Firestore. Không bao gồm 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 bao gồm.
Triển khai tính năng 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 API quen thuộc để nhận và cập nhật. Các trường hợp sử dụng để thêm dữ liệu và nhận dữ liệu đều được á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 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à duy trì ngoại tuyến của SDK Firestore tiêu chuẩn. Bạn nên hiểu các tính năng này trước khi quyết định đánh đổi chúng để có chi phí chung thấp hơ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ó sử dụng Firestore Lite hay không:
- Trạng thái trực tuyến – Firestore Lite phù hợp với các ứng dụng không cần cập nhật trực tiếp và có khả năng kết nối.
- Các hạn chế về kích thước – Firestore Lite rất phù hợp nếu bạn muốn giảm kích thước gói JavaScript tổng thể.