1

编辑:我通过使用修复它:

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

原帖:

我正在尝试弄清楚如何使用 node 和 express 处理帖子,但我完全被卡住了。

经过一番阅读,我注意到人们说我应该使用“中间件”,无论这意味着什么,并创建一条线app.use(express.bodyParser());。我假设在添加后我将req.body在我的 post 方法中有一个可用的。然而事实并非如此。它将 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);
4

1 回答 1

2

尽管您现在已经说过您的代码有效,但我不建议您在选项中使用 bodyParser

app.configure()

它的作用是,如果您照常使用它,则任何文件都可以发送到您的系统中以用于所有发布请求。如果你使用它会更好

express.json()

express.urlencoded()

在选项中 app.configure(),并且当您期望一个文件时,在相应的 post 路由中使用 bodyParser,如下所示

app.post('/upload', express.bodyParser(), function(req, res){//do something with req.files})
于 2013-11-11T07:15:16.520 回答