el modulo de boom esta deprecado, pueden usar @hapi/boom
Introducción
Qué necesitas para este curso y qué aprenderás sobre Node.js con Hapi
Conceptos principales de hapi y creación de nuestro primer servidor
Breve historia y estado actual
Creando un sitio básico con Hapi
El objeto h, response y sus herramientas
Uso de plugins - Contenido estático
Plantillas con Handlebars
Renderizado de vistas - Layout y template del home
Recibiendo parámetros en una ruta POST - Creación del registro
Definir una mejor estructura con buenas prácticas en Hapi
Validando la información - Implementando Joi
Introducción a Firebase
Creando un modelo y guardando en firebase
Implementando el login y validación del usuario
Autenticación de usuarios - Cookies y estado
Manejando errores
Visualización de errores
Controlar el error 404 en inert y el error de validación
Repaso - Creación del modelo y controlador para preguntas
Repaso - Creación de las rutas para crear preguntas
Listar las últimas preguntas en el home
Aplicacion de conceptos avanzados
Enrutamiento avanzado - visualizando una pregunta
Enrutamiento avanzado - respondiendo una pregunta
Generando la lógica de la plantilla según si es creador o contribuidor
Métodos de servidor - respuesta correcta
Usando métodos de servidor
Manejo del caché - Agregando el home al caché
Procesamiento de archivos - Aceptando imágenes
Logging con Good - Monitoreando el servidor
Creación de plugins - Teoría
Creación de plugins - Implementando un API REST
Estrategías de autenticación - Asegurando el API REST
Seguridad básica - Asegurando el servidor contra CSRF
Seguridad básica - Asegurando el servidor contra XSS
Herramientas de desarrollo
Depuración del proyecto
Ecosistema de Hapi
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Adrián Estrada
Para el manejo general de errores con Hapi usamos la instrucción process.on( '<tipo de error>', ( <error> ) => { <callback> } )
en el script principal. En el callback de la función, error devuelve un objeto con los detalles del error capturado. Los tipos de errores que vamos a manejar en el proyecto son: unhandledRejection
y unhandledException
. Estos dos tipos de errores son los más comunes y los que se aconseja manejar como mínimo en cualquier aplicación.
Luego definimos el método failActions
en las rutas en las que haremos las validaciones. Este método hará referencia a su vez al método del controlador en el cual se procesará el manejo de los errores.
Para mostrar los mensajes de error en la aplicación de una manera más amigable y controlada, usaremos el módulo boom, que está integrado en el core de Hapi.
Aportes 6
Preguntas 1
el modulo de boom esta deprecado, pueden usar @hapi/boom
En cuanto a excepciones no manejadas el error que lanza node y por el que hay que estar pendientes es:
“uncaughtException”
Queda así:
process.on('uncaughtException', (err) => {
console.error('Uncaught Exception', err);
process.exit(1);
});
Me gustaría saber si como estoy escribiendo mis controladores son 100% equivalentes a la manera en que lo esta explicando el profesor.
site.js
'use strict'
module.exports = {
home: (request, h) => {
return h.view('index', {
title: 'Home',
user: request.state.user
});
},
register: function(request, h) {
return h.view('register', {
title: 'Register',
user: request.state.user
});
},
login: function(request, h) {
return h.view('login', {
title: 'Login',
user: request.state.user
});
},
logout: function(request, h) {
return h.redirect('/login').unstate('user');
}
};
user.js
'use strict'
const Boom = require('boom');
const { users } = require('../models/index');
module.exports = {
createUser: async function(request, h) {
let result = null;
try {
result = await users.create(request.payload);
} catch (error) {
console.error(error);
return h.response('Problemas creando el usuario!').code(500);
}
return h.response(`Usuario creado, ID: ${result}`);
},
validateUser: async function(request, h) {
let result = null;
try {
result = await users.validate(request.payload);
if(!result) {
return h.response('Email y/o contraseña incorrecta').code(401);
}
} catch (error) {
console.error(error);
return h.response('Problemas validando el usuario!').code(500);
}
return h.redirect('/').state('user', {
name: result.name,
email: result.email
});
},
failValidation: function(request, h, error) {
Boom.badRequest('Falló la validación', request.payload);
}
};
¿Que beneficios trae usar los bloques {{#with variable}} en vez del tradicional {{#if variable}}?
¯\_(ツ)_/¯
✌
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?