Firestore(Web版本9模块化):getDocsFromCache似乎不起作用



我是Firebase的新手,我找到了getDocsFromCache。我听说firebase将它的版本更新到了第9版(模块化(,我必须使用的不仅仅是query.get({source: "cache"})。但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);
/* ... */
​}
};

来自配置脱机持久性的文档:

对于web,默认情况下会禁用脱机持久性。要启用持久性,请调用enablePersistence方法。

因此,请确保在初始化Firebase和Firestore:后立即调用此命令来启用缓存

import { enableIndexedDbPersistence } from "firebase/firestore"; 
enableIndexedDbPersistence(db);

enableIndexedDbPersistence已弃用(至少在firebase v9中(。考虑使用以下方法(我在这里采用了它(:

import { initializeFirestore, memoryLocalCache } from "firebase/firestore";
initializeFirestore(app, {
localCache: memoryLocalCache(),
});

如果您愿意,也可以导入并使用persistentLocalCache而不是memoryLocalCache

相关内容

  • 没有找到相关文章

最新更新