0

app.js

var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');

var helloRouter = require('./routes/hello');

var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

var session_opt={
  secret:'keyboard cat',
  resave:false,
  saveUninitialize:false,
  cookie:{maxAge:60*60*1000}
};
app.use(session(session_opt));
app.use('/hello',helloRouter);

module.exports = app;

hello.js

var express= require('express');
   var router = express.Router();

   router.get('/',(req,res,next)=>{
    var msg = 'write something';
    if(req.session.message != undefined){
        msg = "Last Message"+req.session.message;
    }
    var data={
        title:'Hello',
        content:msg
    };
    res.render('hello',data);
});

router.post('/post',(req,res,next)=>{

    console.log(req.body);


    var msg = req.body['message'];
    req.session.message=msg;
    var data={
        title:'Hello!',
        content:"Last Message"+req.session.message
    };
    res.render('hello',data);
});

module.exports = router;

hello.ejs

<form action="/hello/post" method="post">
     <input type="text" name="message">
     <input type="submit" value="Submit">
</form>

I understand what express.json() will do from this (No.5 a) Then I debug my above coding using console.log(req.body) in hello.js

when I submitted the form, this was displayed

Using express.json()

[Object: null prototype] { message: 'ABC' }

Not using express.json() (I deleted it from app.js)

[Object: null prototype] { message: 'ABC' }

So There is nothing different.what is the purpose for using express.json(). even I don't know my understanding of express.json() is correct or not.

Kazu25
  • 87
  • 1
  • 2
  • 13

1 Answers1

4

You aren't submitting JSON, so it does nothing.

Your req.body comes from express.urlencoded(), which parses the body from the HTML form.

SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
  • I understand. So, In this case, how can I check JSON one? – Kazu25 Feb 18 '19 at 21:26
  • I appreciate you. I understood I was not sending JSON request after I used postman(chrome extension [Tabbed Postman - REST Client]). – Kazu25 Feb 22 '19 at 21:52