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

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Manejo del caché - Agregando el home al caché

26/35
Recursos

Internamente Hapi maneja el caché de las aplicaciones usando un módulo llamado CatBox que ya viene integrado en el core del framework. Este módulo utiliza varios modos de caching; por defecto, Hapi implementa el caché de memoria.

También es posible ampliar las funcionalidades del uso de caché en nuestras aplicaciones instalando y configurando otros módulos disponibles como: Redis, MemCache, etc.

Para habilitar el uso de caching del lado del cliente con Hapi basta con agregar la propiedad options en la definición de cada ruta y definir el tiempo de expiración con expiresIn y el tipo de privacidad con privacy.

...
'options': {
  'expiresIn': <duracion>, // en milisegundos
  'privacy'  : <tipo privacidad>
}
...

Nos apoyaremos en los métodos de servidor que aprendimos en clases anteriores para definir el uso de caché en el backend de nuestra aplicación, ya que Hapi permite hacer caching del resultados de este tipo de métodos al momento de registrarlos en el script principal:

server.method( '<nombre método>', methods.<metodo>, {
'cache': {
  'expiresIn': <duracion>,
  'generateTimeout': <timeout>
}

Aportes 5

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Y esos ojitos?

creo que no notaron que en el método getLast(), se establece como parámetro “amout” y debería ser “amount”, además de esto no se esta pasando ese argumento al modelo en por lo que siempre va traer 10 aunque le pases otro argumento en controlador.

el método debería quedar así:

async function getLast(amount) {
  let data 
  try {
    data = await questions.getLast(amount)
  } catch (error) {
    console.error(error)
  }
  return (data)
}

Compañ[email protected] CatBox toca instalarlo aparte. Ahora es: @hapi/catbox

Saludos!

😮👌

methods.js

'use strict'

const questions = require('../models/index').questions

async function setAnswerRight (questionId, answerId, user) {
    let result
    try {
        result = await questions.setAnswerRight(questionId, answerId, user)
    } catch (error) {
        console.error(error)
        return false
    }
    return result
}

async function getLast(amount) {
    let data
    try {
      data = await questions.getLast(10)
    } catch (error) {
      console.error(error)
    }
    console.log('Se ejecuto el metodo')
    return data
}

module.exports = {
    setAnswerRight: setAnswerRight,
    getLast: getLast
}