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