Capítulo 8: Extraer la entrada del blog

Ahora tenemos un handler para /create-post. El siguiente paso es encontrar nuestra entrada del blog.

Los contenidos de tu entrada del blog están ocultos en tu objeto req en alguna parte. Normalmente lo extraerías de req.body. Haz un console.log de req.body ahora.

¿Recibes un undefined? No te preocupes, es normal. Cuando los datos se han mandado por POST al servidor en forma de FormData (datos enviados a través del formulario), tenemos que hacer el proceso de forma un poco diferente para acceder a los datos que llegan a través del request.

Necesitamos otra función middleware. Algo que permita la extracción de los contenidos del objeto especial FormData. Para esto usaremos express-formidable. express-formidable es otro middleware de Express. Extraerá los datos del formulario del request y hará que estén disponibles para ti cuando hagas req.fields.

Esta vez, express-formidable no está incorporado, tenemos que instalarlo.

Instalando express-formidable

Ve a tu ventana de terminal y desde la raíz del proyecto instala express-formidable:

Command line
npm install express-formidable --save

Después, tienes que hacer require a la librería express-formidable para poder usarla en tu código. No puedes usar guiones en los nombres de variables en Javascript, así que vamos a llamarlo formidable a secas. Hazle require en la parte superior del código del archivo server.js. Normalmente los require es buena práctica requerirlos al principio del documento antes de declarar o programar nada más.

server.js
var formidable = require('express-formidable');

Ahora en algún lugar entre los require y tu endpoint /create-post, añade la siguiente línea:

server.js
// require stuff above

app.use(formidable());

// endpoint stuff below

Por último dentro del endpoint /create-post, añade:

server.js
console.log(req.fields);

Actualiza tu servidor e intenta de nuevo mandar un artículo para el blog.

Ahora deberías ver un objeto en tu consola. La key (clave) debería ser blogpost, como el atributo name del formulario. ¡El valor de blogpost debería ser tu mensaje!

Last updated