Introducción

1

Qué necesitas para este curso y qué aprenderás sobre Node.js con Hapi

2

Conceptos principales de hapi y creación de nuestro primer servidor

3

Breve historia y estado actual

Creando un sitio b√°sico con Hapi

4

El objeto h, response y sus herramientas

5

Uso de plugins - Contenido est√°tico

6

Plantillas con Handlebars

7

Renderizado de vistas - Layout y template del home

8

Recibiendo parámetros en una ruta POST - Creación del registro

9

Definir una mejor estructura con buenas pr√°cticas en Hapi

10

Validando la información - Implementando Joi

11

Introducción a Firebase

12

Creando un modelo y guardando en firebase

13

Implementando el login y validación del usuario

14

Autenticación de usuarios - Cookies y estado

15

Manejando errores

16

Visualización de errores

17

Controlar el error 404 en inert y el error de validación

18

Repaso - Creación del modelo y controlador para preguntas

19

Repaso - Creación de las rutas para crear preguntas

20

Listar las √ļltimas preguntas en el home

Aplicacion de conceptos avanzados

21

Enrutamiento avanzado - visualizando una pregunta

22

Enrutamiento avanzado - respondiendo una pregunta

23

Generando la l√≥gica de la plantilla seg√ļn si es creador o contribuidor

24

Métodos de servidor - respuesta correcta

25

Usando métodos de servidor

26

Manejo del caché - Agregando el home al caché

27

Procesamiento de archivos - Aceptando im√°genes

28

Logging con Good - Monitoreando el servidor

29

Creación de plugins - Teoría

30

Creación de plugins - Implementando un API REST

31

Estrategías de autenticación - Asegurando el API REST

32

Seguridad b√°sica - Asegurando el servidor contra CSRF

33

Seguridad b√°sica - Asegurando el servidor contra XSS

Herramientas de desarrollo

34

Depuración del proyecto

35

Ecosistema de Hapi

No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Curso de Node.js con Hapi

Curso de Node.js con Hapi

Adri√°n Estrada

Adri√°n Estrada

Enrutamiento avanzado - visualizando una pregunta

21/35
Recursos

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

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

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