firebase显示大量无法解释的阅读量的原因是什么



我正在开发一个从firestore读取数据的chrome扩展,在过去的几天里,我最多可以完成50次读取一天的工作,今天由于某种原因,它显示了惊人的34K读取,我该如何修复这个错误?

这是我的代码

useEffect(() => {
const getNotes = () => {
db.collection("Users")
.doc(user.email)
.collection("Notes")
.get()
.then((snapshot) => {
const loadedNotes = snapshot.docs.map((docs) => {
return {
note: docs.data().note,
id: docs.id,
};
});
setNotes(Object.values(loadedNotes) ?? []);
});
};
getNotes();
});

此函数在3个不同的组件中编写了3次,用于notes、todo和即将发生的Events。todo有一个额外的document字段,它表示完成状态,而即将发生的Events有一个字段表示事件日期。

我的项目中也有firebase认证,我不知道这是否重要。

您的useEffect依赖项在哪里?正如所写的,这将在组件的每次渲染中运行。。。这就是你的意图吗?

如果在集合引用上使用get(),则每次请求时都会加载该集合中的每个文档,这会导致读取量过大。您应该在需要的地方使用limit(n)和分页,如果可能的话:在文档上使用source:cache

理想情况下,你应该使用某种redux/redis本地存储,你也可以在应用程序加载时添加数据,并在对Firebase Collections 进行随机抓取之前从中读取

  • https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Source
  • https://firebase.google.com/docs/firestore/query-data/order-limit-data

最新更新