在注册过程中,我想使用Yup
中的自定义验证来检查是否有重复的电子邮件:
validationSchema={yup.object().shape({
email: yup
.string()
.email()
.test({
name: 'duplicate-email-check',
params: 'value',
message: 'Duplicate email already exists',
test: async (value) => {
firebase
.auth()
.fetchSignInMethodsForEmail(value)
.then(result => {
if (result === "password") {
return false
} else {
return true
}
})
.catch(err => console.log(err))
}
})
.required(),
})}
我正在使用fetchSignInMethodsForEmail来获取具有相同电子邮件的任何类型的帐户,如果存在,则会抛出验证错误消息。我在mixed().text()模式之后进行建模,但是问题是,即使没有重复的电子邮件,错误消息“重复的电子邮件已经存在”也不会消失。
答案 0 :(得分:1)
这部分代码不会返回Promise,而Promise会返回ctr.Write
的布尔值
test
您可以将代码更改为:
test: async (value) => { // Notice this, adding curly braces will require you to put a return statement
firebase
.auth()
.fetchSignInMethodsForEmail(value)
.then(result => {
if (result === "password") {
return false
} else {
return true
}
})
.catch(err => console.log(err))
}