# Validaciones

# Joi

Documentación

El lenguaje de descripción de esquemas y el validador de datos más poderoso para JavaScript.

Instalación

npm install @hapi/joi

Joi le permite validar sus datos usando un lenguaje simple a partir de esquemas o plantillas. Al igual que el resto del ecosistema hapi en el que encaja, joi le permite describir sus datos tanto para la validación de entrada como de salida, como parte de un servidor HTTP hapi o independiente.

Uso

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

const schema = Joi.object({
    username: Joi.string()
        .alphanum()
        .min(3)
        .max(30)
        .required(),
    password: Joi.string()
        .pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')),

    repeat_password: Joi.ref('password'),

    access_token: [
        Joi.string(),
        Joi.number()
    ],

    birth_year: Joi.number()
        .integer()
        .min(1900)
        .max(2013),

    email: Joi.string()
        .email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })
})

schema.validate({ username: 'abc', birth_year: 1994 });
// -> { value: { username: 'abc', birth_year: 1994 } }

schema.validate({});
// -> { value: {}, error: '"username" is required' }

// Also -

try {
    const value = await schema.validateAsync({ username: 'abc', birth_year: 1994 });
}
catch (err) { }