如果 firebase 文档不存在则抛出错误

Throw error if firebase document doesn't exist

谁能帮我弄清楚我做错了什么?我想在继续我的函数之前先检查文档是否存在,如果不存在,我会抛出一个错误。但是那个错误永远不会被捕获?这是我要抛出错误的函数:

class StoreGateway {
  async addCustomerToStore(
    customerId: string
  ) {
    const customer = await fb.customersCollection.doc(customerId).get();
    if (customer.exists) {
      //do other stuff
    } else {
      console.log("customer didn't exist")
      return new Error("customer didn't exist");
    }
  }
}

以及我如何调用函数:

StoreGateway.addCustomerToStore(
  req.params.customerId
)
  .then(() => {
    res
      .status(200)
      .json("Success");
  })
  .catch((err) => {
    res.status(500).json(err);
  });
}

现在,如果文档不存在,控制台会打印“客户不存在”,但我从未获得状态 500。

问题是您只是返回一个错误,而不是拒绝承诺。您可以按照以下两种方法拒绝承诺。

1。抛出新错误
if (customer.exists) {
    //do other stuff
} else {
    console.log("customer didn't exist")
    throw new Error("customer didn't exist");
}

2。 Return 被拒绝的承诺

if (customer.exists) {
    //do other stuff
} else {
    console.log("customer didn't exist")
    return Promise.reject(new Error("customer didn't exist"));
}