log post并获取nodejs中的参数

时间:2015-04-27 02:14:40

标签: node.js logging

我试图为nodejs制作简单的记录器来处理post和get请求,但是我遇到了问题,因为node-js的非阻塞功能,参数是在系统后打印的在这里打印响应日志是我的代码

process.stdout.write(createReqFormat(req));

if(req.method !== 'GET') {
  var form = new formidable.IncomingForm();
  form.parse(req, function(err, fields, files){
    process.stdout.write('\n Parameters:' + util.inspect(fields));
  });
}

res.on('finish', function(){
  process.stdout.write(createResFormat(res));
});
next();

现在我只打印post参数的参数,但这已经杀了我。

Started POST /post for 127.0.0.1 at Mon Apr 27 2015 09:08:36 GMT+0700 (WIB)
Completed 200 OK
Parameters:{ one: '1', kals: '123', test: '1233', 'test[123]': 'dfjksdjf' }

如何以正确的顺序打印?

谢谢

1 个答案:

答案 0 :(得分:1)

解析表单实际上可能比完成回复花费更多时间,因此请不要致电next(或res.send),直到您完成表单为止。

process.stdout.write(createReqFormat(req));

res.on('finish', function(){
  process.stdout.write(createResFormat(res));
});

if(req.method !== 'GET') {
  var form = new formidable.IncomingForm();
  form.parse(req, function(err, fields, files){
    if (err) return next(err);
    process.stdout.write('\n Parameters:' + util.inspect(fields));
    next();
  });
} else {
  next();
}