javascript - 使用 Postman 发帖时 Req 没有​​正文

标签 javascript node.js rest express postman

我正在使用 Node 学习 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;

当使用 post 时,我得到 req.body is undefined。

我的 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;

所以我正在使用正文解析器。

这就是我用 postman 发帖的方式:

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

最佳答案

Express 中间件按定义的顺序执行,在您的例子中 bodyParser 定义在 ads 中间件之后,只需将 asd 移到底部

关于javascript - 使用 Postman 发帖时 Req 没有​​正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49581219/

相关文章:

javascript - 使用 backbone.js 时键盘 TAB 导航中断

node.js - 删除当前发出事件的事件监听器

node.js - 如何为 Electron 版本 4.1.4 重建 zeromq.js 绑定(bind)?

json - REST:更新多条记录

java - JAX RS客户端: Catch exception message while making a REST call

javascript - 未捕获的类型错误 : Cannot read property 'tagName' of null

javascript - 创建了一个 jar 头幻灯片(JS 和 JQuery)但移动 jar 头有困难

node.js - 为什么node.js path.resolve 将空字符串解析到当前工作目录?

java - RESTeasy/JAXB 的 JSON 解析错误

javascript - 在类星体中如何将数据从页面传递到布局