为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Cats萌萌 2023-10-20 15:08:44
我目前正在 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'        }    }}有什么办法可以更有效地编写步骤吗?谢谢。
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

如果上面的样式让您感到困扰,只需将代码重构为如下所示:


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;

  }

}


查看完整回答
反对 回复 2023-10-20
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信