node.js中的通过2-MAP的替代方法[与学习Younode有关]



问题我正在解决:

编写一个仅接收发布请求的HTTP服务器,并将传入的帖子字符转换为上案例并将其返回给客户端。

您的服务器应在您程序的第一个参数提供的端口上收听。

我的解决方案

var http = require('http');
var map = require('through2-map')

http.createServer(function(request,response){
    if (request.method == 'POST'){
    request.pipe(map(function (chunk) {
      return chunk.toString().toUpperCase();
    })).pipe(response);

    }
}).listen(process.argv[2]);

我可以实现不使用2-MAP吗?
我的残酷解决方案不起作用:

 request.on('data',function(data){
     body += data.toString();
     console.log(body);
 });
 request.pipe(body.toUpperCase()).pipe(response);

我可以做真正的困难方法吗?

在第二个片段中,body.toUpperCase()将在任何'data'事件实际发生之前立即起作用。.on()的调用仅添加事件处理程序,因此将被调用,但尚未称呼它。

您可以将'end'事件与'data'一起使用,以等待收到所有data块,准备好被提出:

request.on('data', function (data) {
    body += data.toString();
});
request.on('end', function () {
    response.end(body.toUpperCase());
});

注意:确保正在声明body并分配一个初始值:

var body = '';
response.on('data', ...);
// ...

相关内容

  • 没有找到相关文章