Validación de datos con el paquete Joi

Capítulo 120

Tiempo estimado de lectura: 5 minutos

+ Ejercicio
Audio Icon

Escuchar en audio

0:00 / 0:00

Un aspecto crucial al crear API en NodeJS es la validación de datos. La validación de datos es un proceso que garantiza que los datos ingresados ​​en una aplicación sean precisos, completos y cumplan con todas las reglas comerciales establecidas. Para facilitar este proceso, podemos utilizar el paquete Joi, una potente biblioteca de validación de datos para JavaScript.

Joi te permite crear esquemas complejos de validación de datos con un mínimo de código y esfuerzo. Proporciona una variedad de tipos de datos y reglas de validación, lo que la convierte en una herramienta extremadamente flexible y poderosa para cualquier proyecto NodeJS.

Cuando se trabaja con API, la validación de datos es esencial para garantizar la integridad de los datos y evitar errores en la entrada de datos. Por ejemplo, al crear una API para un sistema de administración de usuarios, es posible que deba asegurarse de que el nombre de usuario sea una cadena, que la dirección de correo electrónico sea válida y que la contraseña cumpla con ciertos criterios de complejidad. Joi puede ayudar con todo eso y más.

Para comenzar a usar Joi, primero debemos instalarlo en nuestro proyecto NodeJS. Esto se puede hacer usando el administrador de paquetes npm con el siguiente comando: npm install @hapi/joi.

Una vez instalado, podemos importar Joi a nuestro archivo y comenzar a crear esquemas de validación. Un esquema es una descripción de las reglas de validación que queremos aplicar a nuestros datos. Por ejemplo, podemos crear un esquema para validar la entrada del usuario como este:

Continúa en nuestra aplicación.
  • Escuche el audio con la pantalla apagada.
  • Obtenga un certificado al finalizar.
  • ¡Más de 5000 cursos para que explores!
O continúa leyendo más abajo...
Download App

Descargar la aplicación

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

esquema constante = Joi.object({
  nombre: Joi.string().min(3).max(30).required(),
  correo electrónico: Joi.string().correo electrónico().required(),
  contraseña: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(),
});

En este ejemplo, el esquema define que el nombre debe ser una cadena con un mínimo de 3 caracteres y un máximo de 30, la dirección de correo electrónico debe ser una cadena que pase la validación del correo electrónico y la contraseña debe ser una cadena que coincida. una expresión regular específica.

Para validar los datos de entrada con este esquema, podemos usar el método validate() de Joi. Este método devuelve un objeto que contiene detalles sobre cualquier error de validación que pueda haber ocurrido. Por ejemplo:

entrada de usuario constante = {
  nombre: 'John Doe',
  correo electrónico: 'john.doe@example.com',
  contraseña: 'contraseña123',
};

const validationResult = esquema.validar (entrada de usuario);

si (validaciónResultado.error) {
  console.log(validationResult.error.details);
} demás {
  console.log('La entrada del usuario es válida');
}

Si la entrada del usuario no supera la validación, el método validate() devuelve un objeto que contiene detalles sobre el error, incluido el mensaje de error y la ruta al valor no válido. Podemos utilizar esta información para informar al usuario del error y cómo corregirlo.

Joi también admite la validación de tipos de datos más complejos, como matrices y objetos. Por ejemplo, podemos validar una matriz de cadenas de la siguiente manera:

const arraySchema = Joi.array().items(Joi.string());

const arrayInput = ['manzana', 'plátano', 'cereza'];

const arrayValidationResult = arraySchema.validate(arrayInput);

si (arrayValidationResult.error) {
  console.log(arrayValidationResult.error.details);
} demás {
  console.log('La entrada de la matriz es válida');
}

De la misma manera, podemos validar un objeto que contiene otros objetos o arreglos. Por ejemplo, podemos validar un objeto que representa a un usuario y sus direcciones de la siguiente manera:

dirección constanteEsquema = Joi.object({
  calle: Joi.string().required(),
  ciudad: Joi.string().required(),
  estado: Joi.string().required(),
  zip: Joi.string().required(),
});

const esquema de usuario = Joi.object({
  nombre: Joi.string().required(),
  correo electrónico: Joi.string().correo electrónico().required(),
  direcciones: Joi.array().items(addressSchema),
});

entrada de usuario constante = {
  nombre: 'John Doe',
  correo electrónico: 'john.doe@example.com',
  direcciones: [
    {
      calle: '123 Main St',
      ciudad: 'Cualquier ciudad',
      estado: 'CA',
      código postal: '12345',
    },
    {
      calle: '456 Elm St',
      ciudad: 'Cualquier ciudad',
      estado: 'CA',
      código postal: '12345',
    },
  ],
};

const validationResult = userSchema.validate(userInput);

si (validaciónResultado.error) {
  console.log(validationResult.error.details);
} demás {
  console.log('La entrada del usuario es válida');
}

En resumen, Joi es una herramienta poderosa y flexible para validar datos en proyectos NodeJS. Puede manejar una variedad de tipos de datos y reglas de validación, lo que lo convierte en una excelente opción para cualquier proyecto que requiera una validación de datos sólida.

Ahora responde el ejercicio sobre el contenido:

¿Cuál es el papel principal de la biblioteca Joi en proyectos NodeJS?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Siguiente capítulo

Carga de archivos con Multer en NodeJS

Arrow Right Icon
Portada de libro electrónico gratuitaCómo crear API en NodeJS desde básico hasta avanzado
81%

Cómo crear API en NodeJS desde básico hasta avanzado

Nuevo curso

149 páginas

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.