首页 > 解决方案 > 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 来实时查看对每个用户地址列表所做的更改。

如果有人可以帮助我,谢谢!

标签: reactjsfirebasegoogle-cloud-firestorenext.js

解决方案


推荐阅读