我是 Firebase 新手,我发现从缓存中获取文档 https://firebase.google.com/docs/reference/js/firestore_?authuser=0#getdocsfromcache。我听说 firebase 将其版本更新到版本 9(模块化),我必须使用的不仅仅是query.get({source: "cache"})
. But getDocsFromCache
不适合我。每次我打电话getDocsFromCache
,它不会抛出任何错误,但是snapshot.empty
始终如此,因此我无法访问我的文档(集合)。
如果我必须手动缓存,如何?如果没有,我错过了什么?
谢谢。
import {
collection,
getDocs,
getDocsFromCache,
query,
} from 'firebase/firestore';
import { db } from '../firebase-config';
export const getReviews = async () => {
const q = query(collection(db, 'review'));
try {
const snapshot = await getDocsFromCache(q);
console.log(snapshot.empty); // always true but not throwing any error
snapshot.forEach((doc) => {
/* ... */
});
} catch (e) {
// never reach here
const snapshot = await getDocs(q);
/* ... */
}
};
从文档上配置离线持久化 https://firebase.google.com/docs/firestore/manage-data/enable-offline#configure_offline_persistence:
对于 Web,默认情况下禁用脱机持久性。要启用持久性,请调用enablePersistence
method.
因此,请确保在之后立即调用此函数来启用缓存初始化 Firebase 和 Firestore https://firebase.google.com/docs/firestore/quickstart#initialize:
import { enableIndexedDbPersistence } from "firebase/firestore";
enableIndexedDbPersistence(db);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)