firebase - Firestore 文档获取请求 promise 未解决。我该如何解决这个问题?

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

概括

我在我的项目中使用 react-native-firebase,并且我运行的是纯 react-native(没有 Expo)。但是,在向 Firestore 上的任何文档发出 get 请求时,永远不会给出响应。也就是说,在 try-catch 块中,它既不会解析,也不会被拒绝,它会永远持续下去。
(是的,我知道 promise 并且我正在使用 await/async 所以它不是等待 promise 完成,事实上,主要是 promise 没有得到解决/拒绝)

主要问题是这个问题是随机出现的,并不是每次都失败,它是随机出现的。仔细观察后,我还观察到这主要发生在我不断执行 get 请求时,例如,我有一个查询来检查文档中的最新版本,现在每当我重新加载应用程序时,都会进行这个 get 查询,并且在 2-3 次频繁重新加载时,此查询永远不会解决。

我可以做所有其他 Firebase 的事情,比如检查身份验证、设置文档数据、删除、修改编辑等。但这行不通

一点背景故事

这是我在 react-native 和 react-native-firebase 中的第一个项目。过去,我一直在研究 Ionic 和原生 Android (Java)。我从来没有在那里遇到过这个问题。我在互联网上搜索了很多,我得到的一些解决方案主要是针对 Firebase Web SDK,而不是针对 react-native-firebase。
我找到了一个解决方案,关于从身份验证控制台重置用户,但也从未奏效。我提出了我找到的链接(供引用,因为我的问题与此非常相似,主要区别在于我使用的是 react-native-firebase,而不是 Firebase Web SDK)。

https://github.com/firebase/firebase-js-sdk/issues/533

代码示例

获取查询(我正在使用的几个代码示例)

let updateData = await firebase.firestore().doc('Updates And Errors/Updates').get();

var expensesDoc = await firebase.firestore().doc(`NewExpenses/${dateToday}`).get()


预期产出

所有 Get 查询都应始终有效。

实际产量

获取查询仅在不经常调用时才有效。 (我知道这很奇怪)

最佳答案

您是否尝试过使用常规的 promise (then/catch) 语法?我个人注意到在 redux-saga 的 call 中使用 react-native-firebase 库时出现了一些 promise 不一致的情况。以及(它根本不起作用,就像你提到的那样)。为了解决我的问题,我只是将所有请求包装在返回一个新的实际 promise 的函数中,该 promise 以某种方式起作用。为什么仍然是个谜。

例子:

function get (query) {
  return new Promise((resolve, reject) => {
    query.get()
      .then(data => resolve(data))
      .catch(err => reject(err))
  })
}

// Later use:
await get(firebase.firestore().doc('yourDoc'))

如果您找到合适的解决方案,请告诉我,因为这段代码显然很臭。

关于firebase - Firestore 文档获取请求 promise 未解决。我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55619745/

相关文章:

firebase - 在Cloud Firestore规则中-如何检查键是否为空

android - Dart Flutter Firebase FirebaseException([cloud_firestore/permission-denied] 调用者无权执行指定操作。)

java - 如何创建 firebase 用户帐户

react-native - react-native 可以在没有节点的情况下与 Java 和 Tomcat 一起使用吗?

typescript - 根据世博会上的用户选择更改语言

javascript - React Native 渲染组件列表

java - 从 Cloud Firestore 获取 map 数据

firebase - 使用 Google Apps 脚本将 Google Sheets 数据保存到 Firebase 中

firebase - 如何在列表中添加新项目?

firebase - 使用 map 的 Flutter Firestore where 子句