Implementar validación de modelo
Clase 21 de 38 • Curso de Desarrollo de APIs con Sails.js
Contenido del curso
- 10

Entendiendo operaciones CRUD
05:09 - 11

Crear modelo de rodada
07:43 - 12

Crear app de Ionic
11:42 - 13

Obtener todas las Rodadas: preparando la aplicación para mostrar datos
14:52 - 14

Obtener todas las Rodadas: mostrando los datos
14:25 - 15

Crear Rodada: recibiendo parámetros desde la URL
12:29 - 16

Crear Rodada: enviando información desde el formulario
12:41 - 17

Actualizar Rodada
12:17 - 18

Eliminar Rodadas
04:55
- 26

Uso de JSON Web Token
10:23 - 27

Policies: verificar si usuario está loggeado
11:53 - 28

Agregar usuario a Ride
09:48 - 29

Preparando la App para implementar el Login y Sign up
11:01 - 30

Implementando Login
15:04 - 31

Implementando Sign up
09:35 - 32

Agregar puntos de Rodada
15:20 - 33
Obtener API Keys para Clima y Distancias
00:56 - 34

Integración Google Geocoding: definiendo la lógica
14:57 - 35

Integración Google Geocoding: probando la funcionalidad
06:14 - 36

Integración Weather API
13:05 - 37

Desplegar clima, distancia y tiempo en cada punto de Rodada
06:08
¿Por qué es importante validar el input de los usuarios?
La validación de los campos es un paso crítico en cualquier aplicación web. A la hora de gestionar inputs de usuarios, debemos asegurar que los datos sean válidos y cumplan con los parámetros establecidos por el sistema. Por ejemplo, al registrar un usuario, podríamos recibir un email mal formateado como "LaLitoenlugar@delCorreo.com", que no debería ser aceptado. Además, es crucial validar campos como contraseñas, para mantener la seguridad y funcionalidad del sistema.
¿Qué herramientas podemos usar para la validación en Node.js?
Node.js ofrece varias librerías para la validación de datos, siendo Joi una de las más populares. Esta librería facilita la validación con funciones sencillas, evitando errores comunes y permitiendo que el código sea más mantenible y seguro.
Para comenzar a usar Joi en tu proyecto, primero debes instalarla utilizando el siguiente comando en la terminal:
npm install @hapi/joi
Implementación básica de Joi
Al implementar Joi, se debe realizar una estructura de validación clara y precisa. Comienza por incluir la librería en tu archivo de controladores, por ejemplo, en el controlador del usuario:
const Joi = require('@hapi/joi');
try {
const schema = Joi.object({
email: Joi.string().email().required(),
password: Joi.string().required(),
});
await schema.validateAsync(req.body);
// Continúa con el procesamiento si es válido
} catch (err) {
// Manejo de error
if (err.isJoi) {
res.status(400).send(err.details);
} else {
res.status(500).send('Error en el servidor');
}
}
¿Cómo es el manejo de errores con Joi?
El manejo de errores en Joi es sencillo y efectivo. Si una validación falla, Joi arroja un error que puede ser capturado y tratado adecuadamente. Esto se realiza generalmente usando un bloque try-catch:
- Bloque try: Aquí es donde intentamos validar los datos usando Joi.
- Bloque catch: Captura los errores de validación. Puedes verificar si el error proviene de Joi usando
err.isJoi, lo cual te permitirá diferenciarlo de otros errores de ejecución o del entorno.
Ejemplo práctico de validación y manejo de errores
Vamos a ver un ejemplo más detallado en Node.js. Suponiendo que estamos validando un registro de usuario:
router.post('/signup', async (req, res) => {
const schema = Joi.object({
email: Joi.string().email().required(),
password: Joi.string().min(6).required(),
});
try {
const value = await schema.validateAsync(req.body);
// Si llega a este punto, todo es válido y procedemos al registro
res.status(200).send('Usuario registrado exitosamente');
} catch (err) {
if (err.isJoi) {
res.status(400).send({ message: err.details[0].message });
} else {
res.status(500).send('Error en el servidor');
}
}
});
En este ejemplo, estamos validando que el email sea un correo electrónico válido y que la contraseña contenga al menos seis caracteres. En caso de error, respondemos con un mensaje apropiado al usuario.
Conclusión
El uso de librerías como Joi facilita el trabajo de validación en las aplicaciones web. Al proveer métodos claros y sencillos para verificar inputs y manejar errores, podemos mantener nuestros sistemas seguros y confiables, reduciendo el riesgo de errores y aumentamos la facilidad de mantenimiento. Con esta técnica, no solo protegemos nuestros datos, sino que también mejoramos la experiencia del usuario. Sigue explorando y aplicando estas prácticas para perfeccionar tus habilidades en el desarrollo backend en Node.js.