【发布时间】: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