express.json () должен распознать объект запроса как объект JSON? - PullRequest
0 голосов
/ 19 февраля 2019

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>

Я понимаю, что express.json () будет делать из this (No.5 a) Затем я отлаживаю код, описанный выше, используя console.log (req.body) в hello.js

когда я отправлял форму, это отображалось

Использование express.json ()

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

Не использовать express.json() (Я удалил его из app.js)

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

Так что нет ничего другого. Какова цель использования express.json ().даже я не знаю, правильно ли я понимаю выражение express.json ().

1 Ответ

0 голосов
/ 19 февраля 2019

Вы не отправляете JSON, поэтому он ничего не делает.

Ваш req.body происходит от express.urlencoded(), который отделяет тело от HTML-формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...