【问题标题】:Could not reach Cloud Firestore backend strange behavior无法访问 Cloud Firestore 后端奇怪的行为
【发布时间】:2022-06-15 17:35:51
【问题描述】:

当我启动应用程序并运行此功能时,尝试从 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

【问题讨论】:

  • 我有点面临同样的问题。看起来 UI 在 firebase 应用程序初始化之前加载。我正在关注 docs v9,它实际上是关于如何与 web 一起使用。所以我正准备尝试使用React Native Firebase 也许这会更好

标签: firebase react-native google-cloud-firestore


【解决方案1】:

您可以为您的 Cloud Firestore 实例指定自定义配置。您可以像这样初始化您的 Firebase 应用:

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

正如您在上面的代码中看到的,我使用了experimentalForceLongPolling。它强制 SDK 的底层网络传输 (WebChannel) 使用长轮询。后端发送数据后,来自后端的每个响应都将立即关闭(默认情况下,响应保持打开状态,以防后端有更多数据要发送)。这避免了与某些代理、防病毒软件等不兼容的问题,这些问题会无限期地不正确地缓冲流量。


有关更多信息,您可以查看此documentation 了解更多 Firestore 自定义配置。

【讨论】:

  • 谢谢你,不幸的是我已经在我的配置文件中有这个错误,但我仍然得到错误,当我使用模拟器时似乎发生了更多,但也发生在物理设备上。跨度>
【解决方案2】:

由于这个问题已经消失,我将关闭它。虽然它没有解决,但每当我在真实设备上时,问题似乎要少得多,所以在生产中这并不是真正的问题,同时,我决定添加更多捕获以解决问题而不是必须真正处理它,仍然很烦人。

【讨论】:

    猜你喜欢
    • 2018-09-15
    • 2019-02-07
    • 2020-09-29
    • 2021-08-23
    • 2021-09-05
    • 2021-08-13
    • 2018-06-29
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多