2013-06-06 3 views
2

У меня есть большая проблема с Node.js и Express.Экспресс bodyParser

Я хочу использовать элементы тела моего запроса, но я не знаю, как использовать 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); 

Что я делаю неправильно?

+1

где называется 'positionChange'? – Prinzhorn

+1

есть ли причина, по которой вы используете 'this'? немного нетрадиционным. –

+1

Вы пытались переместить 'app.use (express.bodyParser());' перед началом прослушивания соединений? – TheHippo

ответ

0

Не следует ли это

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

быть этот

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

Так как приложение является экспресс-объектом, который возвращается. Можете ли вы опубликовать полный код, где вызывается positionChange.

1

Если вы хотите использовать nodejs, express и bodyParser, я предлагаю вам четко рассказать о методе, используемом для запроса. Вы хотите использовать метод get или сообщение? Не забудьте ответить в соответствии с использованием информации, которую вы получаете с помощью связи.

Я полагаю, вы хотите использовать пост метод, потому что body parser был создан для метода пост, а query для получить метод.

--- сторона клиента: просто напишите элемент формы, указав, что он использует метод 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

BodyParser больше не используется широко из-за угроз безопасности с ним. Теперь он интегрирован в Express. Не используйте его.

Смежные вопросы