почему не удается отобразить значение заголовка?

#node.js #express

Вопрос:

Я пытаюсь вывести значение title , которое я ввел в форму по /Add-Product ссылке

Вот мой app.js код

 const http= require('http'); const path= require('path');  const express= require('express');  const app= express();  app.set('view engine', 'ejs'); app.set('views', 'Views');  app.use(express.static(path.join(__dirname, 'Public')));  app.get('/', (req, res, next)=gt;{  res.render('shop'); });  app.get('/admin', (req, res, next)=gt;{  res.render('admin'); });  app.get('/add-product', (req, res, next)=gt;{  res.render('addProduct'); });  app.post('/add-product', (req, res, next)=gt;{      console.log(req.body.title); //uable to display value of req.body.title    res.redirect('/'); });   app.listen(3000);  

составьте часть addProduct.ejs

 lt;maingt;  lt;form action="/add-product" method="POST"gt;  lt;pgt;Titlelt;/pgt;  lt;input type="text" name="title" id="title"/gt;  lt;pgt;Pricelt;/pgt;  lt;input type="text" name="price"/gt;  lt;pgt;Descriptionlt;/pgt;  lt;input type="text" name="description"/gt;  lt;button type="submit"gt;Submitlt;/buttongt;  lt;/formgt;  lt;/maingt;  

Не удается понять, почему req.body.title выдает ошибку как: Cannot read property 'title' of undefined Пожалуйста, объясните мне, чего мне не хватает.

Ответ №1:

По умолчанию форма отправляет данные на сервер в виде содержимого application/x-www-form-urlencoded . Поэтому вам необходимо настроить node js для получения контента такого типа. Используется bodyParser для чтения тела запроса с json и закодированным содержимым.

Использование:

 var bodyParser = require('body-parser'); app.use(bodyParser.json()); // support json encoded bodies app.use(bodyParser.urlencoded({ extended: true }));  

Комментарии:

1. Спасибо, это сработало