reactjs - Firebase Firestore onSnapchot 并不总是给我数据
问题描述
我有一个表单,用户可以在其中输入他们的位置,如果用户在数据库中还没有位置,他可以上传一个或多个。如果他已经有一个位置,他可以添加更多,或者删除他想要的。
问题是:即使我存储了一个位置,onSnapshot 请求也不会每次都获取地址。有时当我重新加载页面时,位置在那里,但有时不在那里。另外,当我使用表单上传地址时,有时它会显示在下面,因为数据已被提取,但有时不会...
这是 Firestore 中的一个位置(使用谷歌地理编码数据): https ://i.stack.imgur.com/Svvxd.png
这是从 Firestore 获取地址的 useEffect:
// fetch adresses from firestore
useEffect(() => {
if (user) {
console.log("1. FETCHING ADRESSES START");
var userDocument = firebase
.firestore()
.collection("adresses")
.where("clientId", "==", user.docId);
userDocument.onSnapshot((adresses) => {
const adressesArr = [];
adresses.forEach((adresse) => {
console.log(adresse.data());
adressesArr.push(adresse.data());
});
console.log("adressesArr: ", adressesArr);
setFetchedAdresses(adressesArr);
});
console.log("2. FETCHING ADRESSES DONE");
} else {
console.log("user is not logged in ADRESSES");
}
return function cleanup() {
console.log("DASHBOARD UNMOUNTED");
setFetchedAdresses([]);
};}, []);
这是应用程序的屏幕截图,您可以在其中看到有时会获取地址,有时不会... 地址未获取 地址已获取
我真的需要 Firestore 的 onSnapshot 来实时查看对每个用户地址列表所做的更改。
如果有人可以帮助我,谢谢!
解决方案
推荐阅读
- r - 在R中同时估计两个数据集的威布尔分布参数
- python - 如何访问 scikit-learn 管道中的“每个估计器”?
- python - 在为单独的段运行随机森林时使用可迭代设置时必须具有相同的 len 键和值
- mongodb - 如何让 GraphQL 在不进行轮询的情况下从数据库中获取实时/新数据?
- bash - 从 Deno 运行 bash 脚本
- python - 如何将查询写入文件而不是执行它们
- python - SMTP 出站:欺骗接收者“来自”
- java - rasterObjectFromFile(x, band = band, objecttype = "RasterLayer", 中的 MaxentVariableSelectoin 错误:
- python - python中的时间计数器错误
- javascript - 没有硒或phantomjs的R网页抓取