Express.js req.body什么都没有返回

时间:2016-03-09 14:20:49

标签: javascript angularjs node.js express

我正在学习节点并表达为我将创建的角度应用创建一个api。

当我尝试发布某些内容时,req.body似乎是空白的。

这是我的server.js文件

'use strict';

var express = require('express'),
  app = express(),
  mongoose = require('mongoose'),
  router = require('./api'),
  bodyParser = require('body-parser');

mongoose.connect('mongodb://localhost/my_db');

app.use(bodyParser.json());
app.use('/api', router);

app.get('/', function(req, res) {
  res.render(__dirname + '/index.jade');
});

app.listen(3001, function() {
  console.log('Listening on port 3001');
});

这是我的api / index.js文件:

'use strict';

var express = require('express'),
    Todo = require('../models/todo'),
    router = express.Router();

router.get('/todos', function(req, res) {
  Todo.find({}, function(err, todos) {
    if(err) {
      return console.log(err);
    }
    res.json({todos: todos});
  });
});

router.post('/todos', function(req, res) {
  var todo = req.body;
  res.json({todo: todo});
});


module.exports = router;

当我使用邮递员将此帖子发布到http://localhost:3001/api/todos时:

{
    'name': 'Walk the Dog',
    'completed': false
}

我的回答是:

{
  "todo": {}
}

我不明白为什么这会是空白的,感谢任何帮助。

更新

原来我在邮递员而不是text发布JSON

1 个答案:

答案 0 :(得分:0)

在server.js文件中使用它

app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());