Ojo hay un error en el ask.hbs, el form tiene un enctype=“multipart/form-data” que no es compatible. Recomiendo eliminar esa propiedad
<form method="POST" action="/create-question">
Introducción
Qué necesitas para este curso y qué aprenderás sobre Node.js con Hapi
Conceptos principales de hapi y creación de nuestro primer servidor
Breve historia y estado actual
Creando un sitio básico con Hapi
El objeto h, response y sus herramientas
Uso de plugins - Contenido estático
Plantillas con Handlebars
Renderizado de vistas - Layout y template del home
Recibiendo parámetros en una ruta POST - Creación del registro
Definir una mejor estructura con buenas prácticas en Hapi
Validando la información - Implementando Joi
Introducción a Firebase
Creando un modelo y guardando en firebase
Implementando el login y validación del usuario
Autenticación de usuarios - Cookies y estado
Manejando errores
Visualización de errores
Controlar el error 404 en inert y el error de validación
Repaso - Creación del modelo y controlador para preguntas
Repaso - Creación de las rutas para crear preguntas
Listar las últimas preguntas en el home
Aplicacion de conceptos avanzados
Enrutamiento avanzado - visualizando una pregunta
Enrutamiento avanzado - respondiendo una pregunta
Generando la lógica de la plantilla según si es creador o contribuidor
Métodos de servidor - respuesta correcta
Usando métodos de servidor
Manejo del caché - Agregando el home al caché
Procesamiento de archivos - Aceptando imágenes
Logging con Good - Monitoreando el servidor
Creación de plugins - Teoría
Creación de plugins - Implementando un API REST
Estrategías de autenticación - Asegurando el API REST
Seguridad básica - Asegurando el servidor contra CSRF
Seguridad básica - Asegurando el servidor contra XSS
Herramientas de desarrollo
Depuración del proyecto
Ecosistema de Hapi
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Adrián Estrada
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
Ojo hay un error en el ask.hbs, el form tiene un enctype=“multipart/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:
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, “message”: "Unsupported Media Type"
Alguna idea de que me puede estar pasando?, de antemano gracias
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?