在Firebase云函数中捕获错误时,用于处理错误的Firebase文档没有明确说明哪些错误代码适合设置为Firestore的失败读/写。
给定以下功能:
exports.myCustomFunction = functions.https.onCall( async (data, context) => {
if (!context.auth) {
// Throwing this error is self explanatory and works as expected.
throw new functions.https.HttpsError("unauthenticated", "User must be authenticated.");
}
const uid = context.auth.uid;
const userQuery = admin.firestore().collection("users").where("userId", "==", uid);
try {
const user = await userQuery.limit(1).get();
// do stuff...
} catch (error) {
// ******* THIS IS THE ERROR I NEED HELP WITH *******
throw new functions.https.HttpsError("aborted", "user_query", {error: error});
}
});
如果我在上面的函数中设置的Firestore查询失败,或者如果任何Firestore读/写,或者Firestore批处理集由于任何原因失败,应该设置什么样的错误代码?
选择似乎有限。应该是aborted
还是unknown
?
API文档中列出了可以传递给HttpsError构造函数的错误代码。如果您遇到代码现在或在可预见的未来无法解决的错误,通常使用";"内部";,其转换为通常的500HTTP状态代码。这让客户端知道出了问题,这是后端的故障,不一定可以通过简单的重试来修复。