当我尝试从firebase检索数据时,我遇到了一些奇怪的行为,当我启动应用程序并运行此函数时:
const _query = query(_collection, where("userid", "==", uniqueUserID))
const querySnapshot = await getDocs(_query)
querySnapshot.forEach((doc) => {
console.log(doc.data())
});
我得到了这个错误:
Could not reach Cloud Firestore backend. Backend didn't respond within 10 seconds.
This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to
the backend.
但是,如果我手动刷新应用程序,并且包含该函数的useEffect再次运行,它会成功获取数据。考虑到这两个函数完全相同,并且在加载或刷新视图时被调用,这是非常奇怪的。如何修复此问题?
注意:我使用的是firebase 9.6.11和expo
编辑:经过大量的研究,我终于找到了一些似乎已经解决了这个问题,当运行模拟器时,你需要确保API级别高于25,这在Android中修复了它,对于iOS我无法验证。我不知道为什么会发生这种情况。
3条答案
按热度按时间9cbw7uwe1#
由于这个问题已经平息下来,我将关闭它。虽然它没有被修复,这个问题似乎是少得多发生,每当我在一个真实的的设备上,所以在生产中它不是一个真正的问题,同时,我决定添加更多的渔获物,以绕过这个问题,而不是必须真正处理它,仍然恼人的tho.
jecbmhm32#
您可以为Cloud Firestore示例指定自定义配置。您可以如下初始化Firebase应用程序:
正如您在上面的代码中所看到的,我使用了
experimentalForceLongPolling
。(WebChannel)使用长轮询。后端发送数据后,将立即关闭来自后端的每个响应(默认情况下,响应保持打开,以防后端有更多的数据要发送)。这避免了与某些代理、防病毒软件从而不正确地无限期地缓冲业务。有关更多信息,您可以查看此documentation以获得更多Firestore自定义配置。
qni6mghb3#
对于此错误,Firestore9与vue3
为了我我改变
至