Библиотека Joi и required () на основе другого значения поля - PullRequest
0 голосов
/ 21 апреля 2020

Я создаю модель для управления пользователями, в которой я делаю универсальный c API для внешних пользователей и пользователей AD, поэтому в моей модели у меня есть три дополнительных поля isADUser, adid и addomainid.

Мне нужно сделать adid и addomainid необязательными, если isADUser имеет значение true, в противном случае принудительное применение adid и addomainid не должно указывать go пусто в базе данных, поэтому как изменить required () этих двух полей.

function ValidateUser(user) {
  const schema = Joi.object({
    userid: Joi.string().min(3).max(50).empty().required().messages({
      "string.min": `User Id should be min {#limit} characters..`,
      "string.max": `User Id should be max {#limit} characters..`,
      "string.empty": "User Id cannot be an empty field..",
      "any.required": "User Id is required...",
    }),
    userpass: Joi.string().min(6).max(1024).empty().required().messages({
      "string.min": `Password should be min {#limit} characters..`,
      "string.max": `Password should be max {#limit} characters..`,
      "string.empty": "Password cannot be an empty field..",
      "any.required": "Password is required ...",
    }),
    userfirstname: Joi.string().min(5).max(70).empty().required().messages({
      "string.min": `FirstName should be min {#limit} characters..`,
      "string.max": `FirstName should be max {#limit} characters..`,
      "string.empty": "FirstName cannot be an empty field..",
      "any.required": "FirstName is required...",
    }),
    userlastname: Joi.string().min(5).max(50).empty().required().messages({
      "string.min": `LastName should be min {#limit} characters..`,
      "string.max": `LastName should be max {#limit} characters..`,
      "string.empty": "LastName cannot be an empty field..",
      "any.required": "LastName is required",
    }),
    useremail: Joi.string()
      .min(5)
      .max(255)
      .empty()
      .required()
      .email()
      .messages({
        "string.min": `Email should be min {#limit} characters..`,
        "string.max": `Email should be max {#limit} characters..`,
        "string.empty": "Email cannot be an empty field..",
        "string.email": "Unique Email required ...",
        "any.required": "Email is required",
      }),
    canupdateprofile: Joi.string().min(1).max(1).empty().required().messages({
      "string.min": `CanUpdateProfile flag should be min {#limit} character..`,
      "string.max": `CanUpdateProfile flag should be max {#limit} character..`,
      "string.empty": "CanUpdateProfile flag cannot be an empty field..",
      "any.required": "CanUpdateProfile flag is required",
    }),
    canchangepass: Joi.string().min(1).max(1).empty().required().messages({
      "string.min": `CanChangePassword flag should be min {#limit} character..`,
      "string.max": `CanChangePasswordflag should be max {#limit} character..`,
      "string.empty": "CanChangePassword flag cannot be an empty field..",
      "any.required": "CanChangePassword flag is required",
    }),

    isaduser: Joi.string().min(1).max(1).empty().required().messages({
      "string.min": `AD User Flag should be min {#limit} character..`,
      "string.max": `AD User Flag should be max {#limit} character..`,
      "string.empty": "AD User flag cannot be an empty field..",
      "any.required": "AD User flag is required",
    }),

    adid: Joi.string().min(5).max(255).empty().required().messages({
      "string.min": `Active Directory ID should be min {#limit} character..`,
      "string.max": `CanChangePasswordflag should be max {#limit} character..`,
      "string.empty": "CanChangePassword flag cannot be an empty field..",
      "any.required": "CanChangePassword flag is required",
    }),
    addomainid: Joi.string().min(5).max(255).empty().required().messages({
      "string.min": `CanChangePassword flag should be min {#limit} character..`,
      "string.max": `CanChangePasswordflag should be max {#limit} character..`,
      "string.empty": "CanChangePassword flag cannot be an empty field..",
      "any.required": "CanChangePassword flag is required",
    }),
  });
}
...