request.body使用express bodyParser后未定义

时间:2013-06-22 07:30:13

标签: javascript node.js express

修改:我使用以下方法修复了它:

app.configure(function(){
    app.use(express.bodyParser());
});

原帖:

我正在试图弄清楚如何处理带节点和快递的帖子,而且我完全卡住了。

经过一番阅读后,我注意到有人说我应该使用“中间件”,无论这意味着什么,并创建一行app.use(express.bodyParser());。我假设在添加之后我会在post方法中使用req.body。但情况并非如此。它将console.log改为undefined

我想我不知道如何正确设置它,所以这里什么都没有:

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path')
  , UserProvider = require('./userprovider').UserProvider,
  qs = require('querystring');

var userProvider = new UserProvider('localhost', 27017);

var app = express(), 
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

server.listen(8080);

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

app.get('/new_game', function (req, res) {
    res.sendfile(__dirname + '/new_game.html');
});


app.post('/new_game', function(req, res) {
    var codeToUse = Math.random()*10000;
    codeToUse = Math.round(codeToUse);
    console.log(req.body);
});


app.use(express.bodyParser());



app.listen(3000);

1 个答案:

答案 0 :(得分:2)

虽然您现在已经说过您的代码可以使用,但我不会建议您在

选项中使用bodyParser
app.configure()

它的作用是,如果你像你一样使用它,任何文件都可以发送到你的系统中以获取所有的帖子请求。如果你使用

,那就更好了
express.json()

express.urlencoded()

在选项中     app.configure(), 当您希望文件在相应的邮政路线中使用bodyParser时,就像这样

app.post('/upload', express.bodyParser(), function(req, res){//do something with req.files})