我正在尝试为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' }
如何使其按正确的顺序打印?
谢谢
最佳答案
解析表单实际上可能比完成响应花费更多时间,因此在完成表单之前不要调用 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();
}
关于node.js - 在nodejs中记录日志并获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29886114/