#reactjs #validation #yup
Вопрос:
Я создаю страницу входа в приложение React, где отправляю адрес электронной почты и пароль в api.Теперь я хочу знать, что введенное электронное письмо уже существует или не использует проверку yup.
Ответ №1:
Да, возможно, ниже я покажу, как я это сделал, проверив свой атлас MongoDB:
checkEmail: Yup.boolean(),
email: Yup.string()
.email("Email should be valid and contain @")
.required("Email is required")
.when("checkEmail", {
is: true,
then: Yup.string()
.test({
message: () => "Email already exists",
test: async (values) => {
if (values) {
try {
let response = await fetch("http://localhost:3005/users/check", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ email: values }),
});
if (response.ok) {
return true;
} else {
return false;
}
} catch (error) {
console.log(error);
}
}
},
}),
}),
В поле электронная почта внутри моего обратного вызова onBlur я вручную установил значение checkEmail, которое было ложным в моем первоначальном значении, как показано ниже:
onBlur={(e) => {
props.handleBlur(e);
if (!props.errors.email) {
props.setValues({
...values,
checkEmail: true,
})
}
}
}
Ответ №2:
Я очень уверен, что нет никакого способа проверить это с помощью yup. Однако вы можете просто выполнить поиск в своей базе данных по электронной почте, введенной пользователем. Если ничего не было найдено, электронное письмо еще не существует.