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 de las rutas para crear preguntas

19/35
Recursos

Hasta ahora hemos repasado c贸mo definir el modelo y crear la funci贸n en el controlador para el manejo de preguntas de nuestro proyecto. En esta clase vamos a difinir las rutas y enlazarlas con las vista para que todo trabaje en conjunto.

  • En el action del formulario que definimos en la vista con handlebars indicamos la ruta a la cual se va a dirigir el navegador al hacer clic en el bot贸n en Crear pregunta.

  • Incorporamos el condicional para el manejo de errores en el archivo de handlebars de la vista.

  • Agregamos la url en el archivo layout que enlazar谩 a la ruta que definiremos a continuaci贸n para hacer las preguntas.

  • Creamos la funci贸n necesaria en el controlador para hacer el llamado a la vista.

  • Definimos las nuevas rutas: la de creaci贸n de la pregunta y la que recibir谩 los datos de formulario para crear nuevas preguntas, es ac谩 donde definimos las validaciones que se aplicar谩n a los datos con Joi.

  • Agregamos la ruta en la funci贸n de validaci贸n de urls.

Aportes 8

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Ojo hay un error en el ask.hbs, el form tiene un enctype=鈥渕ultipart/form-data鈥 que no es compatible. Recomiendo eliminar esa propiedad

<form method="POST" action="/create-question">

Acordarse de deconstruir la data antes de setearla si no da error:

async create(data, user) {
        const ask = {
            ...data
        }

        ask.owner = user
        const question = this.collection.push()
        question.set(ask)

        return question.key
    }

Estupenda clase instructor Adri谩n, para aquellas personas que tienen problemas al crear le preguntas sigan estos pasos:

  1. Revisar la etiqueta <form> del archivo ask.hbs, nos fijaremos en que en el atributo actions= 鈥溾 este la direcci贸n que queremos 鈥渃reate-question鈥 y eliminamos todo el atributo enctype=鈥濃
  2. Nos fijamos en el archivo questions.js que est谩 en la carpeta models, all铆 tenemos que manejar el par谩metro data para que sea reconocido como JSON, tenemos dos opciones:

    a. Descontruir data como nos indica el compa帽ero AlbertoDSosa:
async create (data, user) {
        const inquiry = {
            ...data
        }
        inquiry.owner = user
        const questions = this.collection.push()
        questions.set(inquiry)

        return questions.key
    }

b. A帽adir el JSON parse

async create (data, user) {
        data = JSON.parse(JSON.stringify(data));
        data.owner = user
        const questions = this.collection.push()
        questions.set(data)

        return questions.key
    }

Espero que les sea de utilidad estos datos

Exelente curso hasta ahora

'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
    }
}

module.exports = Quiestions

No se, pero llamarme tikistmikis, la funci贸n failValidation tiene tres templates dos del user y uno de questions, pero est谩 en el controlador del user, o ponemos uno similar en question o sacamos todos del user para ponerlo fuera como una utilidad de todos los formularios, es lo que yo har铆a, 鈥

async function failValidation(request, h, error) {
    const templates = {
            '/create-question': 'question'
        }
        // return Boom.badRequest('Fall贸 la validaci贸n', request.payload)
    console.log('PATH: ', request.path);
    return h.view(templates[request.path], {
        title: 'Error de Validaci贸n',
        error: 'Por favor complete los campos requeridos'
    }).code(400).takeover(); // se salta el error (400, del boom) con el takeover() y retorna la vista
}

Hasta ahora va genial el curso鈥

Hola a todos, Me aparce un error 415, 鈥渕essage鈥: "Unsupported Media Type"
Alguna idea de que me puede estar pasando?, de antemano gracias