gpt4 book ai didi

javascript - 处理JavaScript中Firebase身份验证错误的有效方法

转载 作者:行者123 更新时间:2023-12-03 08:17:04 24 4
gpt4 key购买 nike

我目前在JavaScript中使用Firebase身份验证,并尝试创建一个注册用户的功能。我需要检查的第一步是电子邮件使用的可用性。是否使用getUserByEmail()函数。如果未使用电子邮件,请继续注册步骤,否则,返回包含错误状态和错误消息的对象。
问题是,getUserByEmail()函数返回一个Promise。因此,如果提供的电子邮件尚未注册,则该函数将返回错误。这是可以理解的,因为该功能基于Promise。但是令我困扰的是语法顺序,因为它是“反向的”,因为从我通常的操作来看,try块是执行“正确的步骤”,而catch块是执行“错误的步骤”。这是我写的代码:

try {
const findFirebaseUser = await admin.auth().getUserByEmail(email);

return {
status: false,
message: 'Email has been used'
}
} catch (error) {
if (error.errorInfo.code === 'auth/user-not-found') {
// register step
const { uid } = await admin.auth().createUser({
displayName: name,
password,
email,
phoneNumber
});

await admin.auth().setCustomUserClaims(uid, { role });

return {
status: true,
message: 'Success'
}
}
}
我有什么办法可以更高效地编写步骤?谢谢。

最佳答案

如果上述样式困扰您,只需将代码重构为如下所示:

const exists = await isUserExists(email);
if (exists) {
return { status: false, message: 'already exists' };
}
// Create and set claims



async function isUserExists(email) {
try {
await admin.auth().getUserByEmail(email);
return true;
} catch (err) {
return false;
}
}

关于javascript - 处理JavaScript中Firebase身份验证错误的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65178194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com