使用Postman发帖时,Req没有正文

时间:2018-03-30 20:45:27

标签: javascript node.js rest express postman

我正在通过节点了解REST。

我试图使用post将元素添加到我的数据库中。

我的代码:

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var AdModule = require('../models/ad');

router.route('/')
    .get((req, res) => {
        AdModule.find((err, col) => {
            if (err)
                res.send(err);
            res.json(col);
        })
    })
    .post((req, res) => {
        var ad = new AdModule();
        ad.title = req.body.title;
        ad.desc = req.body.desc;
        ad.price = req.body.price;
        ad.save(err => {
            if (err)
                res.send('err' + err);
            res.json({msg: 'Created'});
        })
        res.json(req);
    });

module.exports = router;

使用帖子时,我的req.body未定义。

我的server.js代码:

'use strict';

//======================= Base setup =======================\\

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var config = require('./globals/config');

var index = require('./routes/index');
var users = require('./routes/users');
var ads = require('./routes/ads');

var app = express();


//========================= DB =============================\\

mongoose.connect(config.db, () => {
    console.log('Connected');
});


//========================= Routes =========================\\

app.use('/', index);
app.use('/users', users);
app.use('/ads', ads);

//========================= Parsers ========================\\

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

// app.engine('html', require('ejs').renderFile);
// app.set('view engine', 'html');

//========================= 404 ============================\\

// catch 404 and forward to error handler
// app.use(function(req, res, next) {
//     var err = new Error('Not Found');
//     err.status = 404;
//     next(err);
// });
//
// // error handler
// app.use(function(err, req, res, next) {
//     // set locals, only providing error in development
//     res.locals.message = err.message;
//     res.locals.error = req.app.get('env') === 'development' ? err : {};
//
//     // render the error page
//     res.status(err.status || 500);
//     res.render('error');
// });
//

//==========================================================\\

module.exports = app;

所以我正在使用身体解析器。

这就是我发布邮递员的方式:

enter image description here

这种疯狂的原因是什么?

我猜它是server.js的东西,但不知道是什么。

我正在学习本教程。

https://scotch.io/tutorials/build-a-restful-api-using-node-and-express-4#creating-routes-for-a-single-item

2 个答案:

答案 0 :(得分:1)

按照定义它们的顺序执行快速中间件,在bodyParser中间件之后定义的ads中,只需将asd移到底部

答案 1 :(得分:1)

将您的解析器放在路线上方 - 就像现在发生的那样,请求在有机会通过解析器之前就已经到达了路径。