【问题标题】:How to handle Firebase Firestore errors with async/await如何使用 async/await 处理 Firebase Firestore 错误
【发布时间】:2021-10-30 08:27:27
【问题描述】:

我一直在尝试弄清楚如何使用 async/await 处理 Firestore 的 Firebase 错误。如果文档不存在,我想显示一条错误消息,但我对如何使用 async/await 执行此操作有点困惑。

getResult.js

如果我故意提供一个虚假的文档 ID,catch 功能会自动接管,我无法再访问 result.exists,这正是我在这种情况下所需要的。 有没有一种方法可以让我在捕获它时轻松检查它是什么类型的错误,以便我可以返回适当的消息?

export const getResult = async (collection, doc) => {
  try {
    const resultRef = db.collection(collection);
    const result = await resultRef.doc(doc).get();

    if (result.exists) {
      return { data: result };
    } else {
      return { data: "Error retrieving document, as it doesnt exist" };
    }
  } catch (err) {
    if (err.response) {
      console.log(err.response.data);
      return err.response.data;
    } else if (err.request) {
      console.log(err.request);
      return err.request;
    } else {
      console.log(err.message);
      return err.message;
    }
  }
};

【问题讨论】:

  • "如果我故意提供一个伪造的文档 ID,catch 功能会自动接管"。这听起来不对。如果 doc 不存在,那么它不会抛出错误。您能否提供您在 catch 中遇到的任何错误的屏幕截图?现有代码对我来说看起来非常好

标签: javascript reactjs firebase google-cloud-firestore error-handling


【解决方案1】:

有没有一种方法可以让我在捕获它时轻松检查它是什么类型的错误?

您将获得的唯一信息是err 对象。我们看不到您的具体情况是什么,因为我们无法运行您的代码。但是,您必须使用该对象来找出问题所在以及如何解决它。这些异常对象没有“类型”。您必须查看对象的内容才能了解问题所在。

您可能想阅读 JavaScript 中的 exception handling。 JavaScript 中的所有 Promise 都是一样的。 Firestore 也不例外。

【讨论】:

    猜你喜欢
    • 2018-09-03
    • 2021-12-31
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2021-04-01
    • 2019-02-14
    • 2016-08-04
    • 2020-11-19
    相关资源
    最近更新 更多