声明要与Firestore可调用函数和VueJS一起使用的自定义例外

问题描述 投票:0回答:1

到目前为止,我尝试过

A

class MyException extends Error {
  constructor(message, code) {
    super(message);
    this.code = code;
  }
}
exports.MyException = MyException;

VueJS说“未定义导出”

如果我只是做了

B

exports.MyException = () => {}

然后Firebase说MyException不是构造函数。当我

throw new MyException()

实际上,一旦异常通过可调用函数传递,它是否仍是instanceOf

我应该一起去

C

try {
  let d = await db.collection('x').document('y')
  if (!d.exists) {
    let e = new Error('Document Does not Exist')
    e.code = 'ERR_NO_DOCUMENT'

    throw e
  }
  else {
    return d.data()
  }
}

C是一个好习惯吗?

javascript node.js firebase google-cloud-firestore google-cloud-functions
1个回答
2
投票

documentation中有关可调用云功能的说明:

为了确保客户端获得有用的错误详细信息,请从通过抛出(或返回被拒绝的Promise)来调用functions.https.HttpsError的实例。

正在这样做

functions.https.HttpsError

将不起作用。

您需要在可调用的云函数中执行以下操作:

try {
  let d = await db.collection('x').document('y')
  if (!d.exists) {
    let e = new Error('Document Does not Exist')
    e.code = 'ERR_NO_DOCUMENT'

    throw e
  }
  else {
    return d.data()
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.