typescript - 在 Cloud Functions 中使用 FirestoreErrors

如何在我的 Firebase 云函数中使用 https://firebase.google.com/docs/reference/node/firebase.firestore.FirestoreError 类?

当我要查找的文档或字段在 Firestore 中未定义时,我想抛出 FirestoreError 类型的错误:

throw new FirestoreError();

当我像这样导入 FirestoreError:import { FirestoreError } from "firebase/firestore"; 并抛出 FirestoreError 时,它表示构造函数是私有的。我可以从 Firebase 函数中抛出 FirestoreError 还是必须抛出 HttpsError?

谢谢

回答1

FirestoreError 是内部技术错误。

我猜你想抛出一个与你的应用程序逻辑相关的 AppError,而不是与 Firestore 本身的技术问题。

对于这个,可以使用 HttpsError。在客户端捕获它并检查 your-app-error-id

throw functions.https.HttpsError(
  'your-app-error-id',
  'The message.'
);

文档

为确保客户端获得有用的错误详细信息,请通过抛出...函数实例来从可调用返回错误。https.HttpsError。

如果从您的函数中抛出 HttpsError 以外的错误,相反,您的客户会收到错误消息 INTERNAL 和内部代码。

https://firebase.google.com/docs/functions/callable#handle_errors

例子

if (!(typeof text === 'string') || text.length === 0) {
  // Throwing an HttpsError so that the client gets the error details.
  throw new functions.https.HttpsError('invalid-argument', 'The function must be called with ' +
      'one arguments "text" containing the message text to add.');
}

相似文章

c++ - 已经在 dllmain.obj 中定义

我正在尝试清理一些代码,将某些部分移动到.h和.cpp文件中。问题是当我尝试编译时,我得到一个“已经定义”的错误。我知道有几个像这样的问题。但是我已经检查了几次,我没有看到任何重复的定义,也看不到它所...