Строка проверки Joi (). Trim () не работает - PullRequest
1 голос
/ 04 апреля 2020

Я использую @ hapi / joi для express проверки и санитарии. При проверке некоторые валидаторы не работают. В этом не только trim () не проверяет пустое пространство в начале и конце входной строки, но и не обрезает его, как предполагается, учитывая, что для convert установлено значение true по умолчанию. Тем не менее, проверка на действительный адрес электронной почты и требуется как работать, так и выдавать свои ошибки Я также пытался использовать нижний регистр (), и он не проверял и не преобразовывал его в нижний регистр.

const Joi = require("@hapi/joi");

const string = Joi.string();

const localRegistrationSchema = Joi.object().keys({
  email: string
    .email()
    .trim()
    .required()
    .messages({
      "string.email": "Email must be a valid email address",
      "string.trim": "Email may not contain any spaces at the beginning or end",
      "string.empty": "Email is required"
    })
});

1 Ответ

1 голос
/ 04 апреля 2020

С версией> = 17 Joi вы можете написать схему следующим образом:

const localRegistrationSchema = Joi.object({ // changes here,
  email: Joi.string() // here
    .email()
    .trim()
    .lowercase() // and here
    .required()
    .messages({
      'string.email': 'Email must be a valid email address',
      'string.trim': 'Email may not contain any spaces at the beginning or end', // seems to be unnecessary
      'string.empty': 'Email is required'
    })
});

console.log(localRegistrationSchema.validate({ email: '' }));
// error: [Error [ValidationError]: Email is required]

console.log(localRegistrationSchema.validate({ email: '  foo@bar.com' }));
// value: { email: 'foo@bar.com' }

console.log(localRegistrationSchema.validate({ email: 'foo@bar.com  ' }));
// value: { email: 'foo@bar.com' }

console.log(localRegistrationSchema.validate({ email: 'FOO@BAR.COM' }));
// value: { email: 'foo@bar.com' }
...