我创建了一个简单的createUser
函数,它在调用时执行。但我有一个问题。当用户尝试注册一个已经存在的电子邮件时,该功能崩溃。我的意思是,这是确定的,因为没有人希望有2个用户具有相同的电子邮件地址,但我想防止粉碎功能,相反,我想发送一个错误消息作为响应。
export const createUserTest = functions.https.onCall((data, context) => {
const {email, password} = data;
return new Promise((resolve, reject)=>{
try{
admin
.auth()
.createUser({
email: email,
emailVerified: false,
password: password,
disabled: false,
})
.then((user) => {
resolve({
result: 'success',
user: user,
}) ;
})
.catch((error) => {
reject(error) ;
});
}catch(error) {
reject (error)
}
})
});
我试着把函数放到try/catch
块中,但没有用。你知道我怎样才能达到目标吗?
1条答案
按热度按时间gk7wooem1#
正如Callable Cloud Functions文档中所解释的那样,“为了确保客户端获得有用的错误详细信息,通过抛出(或返回一个Promise rejected with)
functions.https.HttpsError
的示例来从可调用对象返回错误”。错误具有
code
属性,该属性可以是此处列出的值之一。在您的情况下,最合适的似乎是already-exists
。另一方面,您会在Admin SDK Authentication错误列表中找到here,并且您会看到,如果提供的电子邮件已被现有用户使用,则错误代码为
auth/email-already-exists
。因此,您可以如下调整代码:
请参阅文档中的此处,如何在客户端处理错误。如果
error.code == 'already-exists'
,你知道这是因为电子邮件已经在使用中。