2016-03-09 88 views
0

我學習的節點,並表示爲一個角應用程序,我將創建創建一個API。Express.js req.body正在返回什麼

當我嘗試發佈東西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": {} 
} 

我看不出爲什麼這會是空白,任何幫助表示讚賞。

UPDATE

原來我在郵差,而不是JSON發佈text

+0

我沒有設定的角度上去過,我第一次做的API,我用的是叫郵差的應用程序發佈。原來這是我的錯,我發佈'文本'而不是'JSON'我會更新我的問題。 – Ollie2619

+0

你是否以郵遞員的身份發送'application/json'?或者作爲默認的編碼形式? – charlietfl

+0

你有沒有檢查你是否在服務器上收到它?我的意思是console.log? – Nonemoticoner

回答

0

使用這種在server.js文件

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