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

Repaso - Creación del modelo y controlador para preguntas

18/35
Recursos

En esta clase tomaremos la sección de preguntas de nuestro proyecto para hacer un repaso de lo aprendido hasta ahora.

  • A partir del html, tomamos el contenido del tag
  <main>
    ...
  </main>

y lo extraemos a un archivo de handlebars en la carpeta /vistas

  • Creamos el modelo de preguntas
    questions.js en la carpeta /models
class MiModelo {
  constructor ( db ) {
    this.db = db
    this.ref = this.db.ref('/')
    this.collection = this.ref.child('entidad')
  }
  async miMetodo( args ) {
    // --- instrucciones
  return key
  }
}
module.exports = MiModelo
  • En el index.js de la carpeta /models, importamos cada archivo de modelo luego de la declaración de la base de datos de Firebase, y los exportamos con new para que no haya duplicados.

  • Creamos el archivo de controlador en la carpeta /controllers con la función que va a retornar la vista, e importamos el modelo creado a través del index. Al finalizar, exportamos la función.

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

normalmente dentro de las convenciones del mvc no es al revés? (modelos en singular y controladores en plural)

Mientras tanto en vez de responder con return h.response(`Pregunta creada con el ID ${result}`) , pueden redireccionar al home

return h.redirect('/')```

'use strict'

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

async function createQuestion(req, h) {
    let result

    try {
        result = await questions.create(req.payload, req.state.user)
        returnh.response(`Pregunta creada con el ID: ${result}`)
        console.log(`Pregunta creada con el ID: ${result}`)
    } catch (error) {
        console.error(`Ocurrio un error: ${error}`)

        return h.view('ask', {
            title: 'Crear pregunta',
            error: 'Problemas creado la pregunta'
        }).code(500).takeover()
    }
}

module.exports = {createQuestion: createQuestion}

Es necesario mantener los archivos html en la carpeta public?