Javascript Koa路由器和POST

Javascript Koa路由器和POST,javascript,node.js,koa,Javascript,Node.js,Koa,我正试图在我的koa路由器内处理POST请求。不幸的是,每次我尝试使用表单发送数据时,都一无所获。我试过koa bodyparser,运气不好。我使用Jade作为模板引擎 router.js: var jade = require('jade'); var router = require('koa-router')(); var bodyParser = require('koa-bodyparser'); exports.enableRouting = function(app){ ap

我正试图在我的koa路由器内处理POST请求。不幸的是,每次我尝试使用表单发送数据时,都一无所获。我试过koa bodyparser,运气不好。我使用Jade作为模板引擎

router.js:

var jade = require('jade');
var router = require('koa-router')();
var bodyParser = require('koa-bodyparser');
exports.enableRouting = function(app){
  app.use(bodyParser())      
  router.get('/game/questions', function *(next){
    this.status = 200;
    this.body = jade.renderFile('game_questions.jade');
  });
  router.post('/game/questions', function *(next){
    console.log(this.request.body);
    this.status = 200;
    this.body = jade.renderFile('game_questions.jade');
  });
  app
      .use(router.routes())
      .use(router.allowedMethods());
}
和部分游戏问题。jade:

form(method='post' id='New_Question_Form')
  input(type='text', id='New_Question_Text')
  input(type='submit' value='Add Question')

this.request.body
为空,
this.request
返回:方法、URL和头。感谢您的帮助

如果有人在搜索过程中偶然发现了这一点,我建议将koa机构传递给post请求,如下所示:

var koa = require('koa');
var http = require('http');
var router = require('koa-router')();
var bodyParser = require('koa-body')();

router.post('/game/questions', bodyParser, function *(next){
  console.log('\n------ post:/game/questions ------');
  console.log(this.request.body);
  this.status = 200;
  this.body = 'some jade output for post requests';
  yield(next);
});

startServerOne();

function startServerOne() {
  var app = koa();
  app.use(router.routes());
  http.createServer(app.callback()).listen(8081);
  console.log('Server 1 Port 8081');
}
但是,如果post数据被发送到您所说的/game/questions,会发生什么呢?让我们转向它无限的智慧

curl --data "param1=value1&pa//localhost:8081/game/questions'
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 34
Date: Thu, 17 Dec 2015 21:24:58 GMT
Connection: keep-alive

some jade output for post requests
在日志控制台上:

------ post:/game/questions ------
{ param1: 'value1', param2: 'value2' } 

当然,如果您的jade不正确,则任何主体解析器都无法拯救您。

请尝试onerror选项并尝试它-没有错误。不过谢谢:)没有解决问题。尽管通过使用Socket.io保存表单而不是使用POST发送表单,我们还是设法解决了这个问题。如果有人好奇我是怎么做到的。