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?

o inicia sesi贸n.

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?