React Native 无法访问Cloud Firestore后端奇怪的行为

hgqdbh6s  于 2022-11-17  发布在  React
关注(0)|答案(3)|浏览(131)

当我尝试从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我无法验证。我不知道为什么会发生这种情况。

9cbw7uwe

9cbw7uwe1#

由于这个问题已经平息下来,我将关闭它。虽然它没有被修复,这个问题似乎是少得多发生,每当我在一个真实的的设备上,所以在生产中它不是一个真正的问题,同时,我决定添加更多的渔获物,以绕过这个问题,而不是必须真正处理它,仍然恼人的tho.

jecbmhm3

jecbmhm32#

您可以为Cloud Firestore示例指定自定义配置。您可以如下初始化Firebase应用程序:

const app = initializeApp(firebaseConfig);
const db = initializeFirestore(app, {
  experimentalForceLongPolling: true,
});

正如您在上面的代码中所看到的,我使用了experimentalForceLongPolling。(WebChannel)使用长轮询。后端发送数据后,将立即关闭来自后端的每个响应(默认情况下,响应保持打开,以防后端有更多的数据要发送)。这避免了与某些代理、防病毒软件从而不正确地无限期地缓冲业务。
有关更多信息,您可以查看此documentation以获得更多Firestore自定义配置。

qni6mghb

qni6mghb3#

对于此错误,Firestore9与vue3

为了我我改变

export const db = firebaseApp.firestore()

export const db = firebaseApp.firestore({
    experimentalForceLongPolling: true,
});

相关问题