Al exportar las funciones del controlador tambien se podria hacer asi:
module.exports = {
home,
register,
login,
notFound,
fileNotFound,
ask,
viewQuestion
}
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
A través del enrutamiento avanzado de Hapi, recibiendo parámetros en el request, podemos tener una vista especÃfica para mostrar los detalles de cada pregunta. Partimos de un archivo html y creamos un método en el modelo de preguntas que ya tenÃamos antes. Este método nos permitirá obtener el objeto con los detalles de la pregunta individual según su ID.
Al igual que en oportunidades anteriores, creamos una función en el controlador del sitio que maneje la ruta para la nueva vista. Creamos la plantilla con handlebars trasladando el contenido del tag main, desde la vista html original e incluimos las variables que recibimos desde el modelo.
Definimos una nueva ruta en el archivo routes.js
, indicando en la propiedad path los parámetros que esperamos recibir desde el controlador, es aquà donde estamos utilizando el enrutamiento avanzado. Finalmente actualizamos los enlaces en el layout principal colocando en href la nueva ruta creada con la variable key que dispones en cada iteración del ciclo each
para las preguntas recientes.
Aportes 3
Preguntas 1
Al exportar las funciones del controlador tambien se podria hacer asi:
module.exports = {
home,
register,
login,
notFound,
fileNotFound,
ask,
viewQuestion
}
Me esta gustando mucho la simplicidad de Hapi, es muy amigable la forma de hacer codigo, o al menos eso pienso 😄
'use strict'
class Quiestions {
constructor(db) {
this.db = db
this.ref = this.db.ref('/')
this.collection = this.ref.child('questions')
}
async create (data, user) {
const ask = {
...data
}
ask.owner = user
const question = this.collection.push()
question.set(ask)
return question.key
}
async getLast(amount) {
const query = await this.collection.limitToLast(amount).once('value')
const data = query.val()
return data
}
async getOne (id) {
const query = await this.collection.child(id).once('value')
const data = query.val()
return data
}
}
module.exports = Quiestions
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?