Как проверить, существует ли идентификатор электронной почты или нет, используя проверку yup?

#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. Однако вы можете просто выполнить поиск в своей базе данных по электронной почте, введенной пользователем. Если ничего не было найдено, электронное письмо еще не существует.