Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 请求流Get+;Node.js中后期编辑的JSON正文_Javascript_Json_Node.js_Xmlhttprequest - Fatal编程技术网

Javascript 请求流Get+;Node.js中后期编辑的JSON正文

Javascript 请求流Get+;Node.js中后期编辑的JSON正文,javascript,json,node.js,xmlhttprequest,Javascript,Json,Node.js,Xmlhttprequest,我是Node.js新手,正在从事一个项目,我想使用请求从一个端点流到另一个端点。我的目标是使用请求获取并发布一个使用管道流编辑的JSON主体。我知道这样做时,文章标题中会保留内容类型和内容长度。但是,我希望将.forEach从第一个url应用到正文中的所有JSON对象,并将它们发布到第二个url 我不确定格式是否正确,请澄清一下 我知道基本语法如下: request.get('URL').pipe(request.post('URL')); 到目前为止,我最好的猜测是这样的: request(

我是Node.js新手,正在从事一个项目,我想使用请求从一个端点流到另一个端点。我的目标是使用请求获取并发布一个使用管道流编辑的JSON主体。我知道这样做时,文章标题中会保留内容类型和内容长度。但是,我希望将.forEach从第一个url应用到正文中的所有JSON对象,并将它们发布到第二个url

我不确定格式是否正确,请澄清一下

我知道基本语法如下:

request.get('URL').pipe(request.post('URL'));
到目前为止,我最好的猜测是这样的:

request('FIRST_URL', function (error, response, body) {
  body = JSON.parse(body);
  body.forEach( function(arg) {
      //return edited body
  });
}).pipe(request.post('SECOND_URL'));

我错过什么了吗?有更好的方法吗?

您可以编写自己的转换流。例如:

 var Transform = require('stream').Transform;
 var inherits = require('util').inherits;

 function JSONTransform() {
   Transform.call(this);
   this._bufffer = '';
 }
 inherits(JSONTransform, Transform);
 JSONTransform.prototype._transform = function(chunk, enc, cb) {
   this._buffer += chunk;
   cb();
 });
 JSONTransform.prototype._flush = function(cb) {
   try {
     var result = JSON.parse(this._buffer);
     this._buffer = null;

     // Do whatever transformations
     // ...

     this.push(JSON.stringify(result));
     cb();
   } catch (ex) {
     cb(ex);
   }
 });

 // Then just pipe
 request.get('FIRST_URL')
        .pipe(new JSONTransform())
        .pipe(request.post('SECOND_URL'));
另一个值得考虑的稍有不同的解决方案是使用第三方流式JSON解析器模块,它可能适用于您的用例,也可能不适用于您的用例