表达bodyParser

时间:2013-06-06 10:21:53

标签: node.js express

Node.js和Express有一个很大的问题。

我想使用我的请求的正文元素,但我不知道如何在我的程序中使用bodyParser();它不只是app.use() ...

亲眼看看:

requestServer = function(){
  var express = require('express');
  this.ex = express;

  //this.app = require('express')();
  this.app = express();
  this.server = require('http').createServer(this.app);
  this.io = require('socket.io').listen(this.server, {log: false});
  this.socket = []; 

  this.app.post('/test/', this.testFunction.bind(this));

  this.io.sockets.on('connection', this.socketConnection.bind(this));

  this.app.use(express.bodyParser());
};

...

requestServer.prototype.positionChange = function(req, res){    
  console.log(req.body); // says its undefined???
  console.log(req.body.name); // also undefined :(
};

...

var server = new requestServer();
server.listen(6667);

我做错了什么?

3 个答案:

答案 0 :(得分:1)

如果你想使用nodejs,express和bodyParser,我建议你清楚说明用于请求的方法。你的意思是使用get方法还是帖子?请记住根据您通过沟通获得的信息的使用情况来回答。

我想您要使用帖子方法,因为已为post方法创建了body parser,并为获取了<{3}} 方法。

---客户端:只需编写一个表单元素,指定它使用post方法。为每个输入元素命名。

 <form method="POST" action="/readRequest">
      <input type="text" name="email" hint="email" value="" size="40"/>
      <inpnut type="submit" value="request" /> 
 </form>

---节点方: 进入中间件你要捕获 / readRequest ,用'。'读取值。请求元素上的运算符

function (req, res, next){ 
  console.log('Email received: '+req.body.email); 
  next();
}

答案 1 :(得分:1)

由于安全漏洞,BodyParser不再被广泛使用。它现在已集成在Express中。不要使用它。

答案 2 :(得分:0)

不应该这个

var server = new requestServer();
server.listen(6667);

是这个

var server = new requestServer();
server.app.listen(6667);

由于app是快递对象,因此返回。您可以发布调用positionChange的完整代码吗。