【发布时间】:2022-01-15 18:28:00
【问题描述】:
我是 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);
/* ... */
}
};
【问题讨论】:
-
getDocsFromCache为空不是错误条件,因为缓存中的内容表明您的查询没有结果。如果在过去的任何时候,当您最后一次调用getDocs(q)时没有返回任何结果,缓存将存储相同的响应 - 没有结果。您可以清除缓存以重试,也可以在没有结果时直接抛出您自己的错误。 -
是的,我在使用
getDocs成功获得一些结果后立即尝试了getDocsFromCache,但它总是返回空响应...感谢您非常有帮助的评论。
标签: javascript reactjs firebase google-cloud-firestore