我目前正在 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'
}
}
}
有什么办法可以更有效地编写步骤吗?谢谢。
阿波罗的战车
相关分类