0

150K レコードの大きなファイルを要求していますが、「toString に失敗しました」というエラーがスローされます。nodejs/node#3175によると、maxBufferSize が原因です。リクエストは 200 レコードでうまく機能しますが、それは外部 API であり、要件はすべてのレコードを一度に取得することです。

私はすでにここでこの質問をしました

編集:

request("http://www.site-containing-big-data/api",
        function (error, response, body) {
            console.log('got something to show');
            if(!error && response.statusCode == 200) {
                resolve(body);
            }else if(error){
                reject(error);
            }
        });

toString failedしかし、メッセージ以外のコンソールには何も表示されません

4

1 に答える 1

0

それを解決しました。それはxmlファイルで、直接処理しようとしていました。今、私は最初にファイルに保存してxml-streamから、各オブジェクトを 1 つずつ処理するために使用しています。

request.get("http://www.site-containing-big-data/api" )
        .on('error', function(errReq) {
            console.log('error while reading from big site : ', errReq);

        }).on('end', function(){
            console.log('got from big site, now processing');
            var XmlStream = require('xml-stream') ;
            var stream=fs.createReadStream('bigfile.xml');
            xml = new XmlStream(stream);
            xml.on('endElement: item', function(item) {//item is a node. structure is <items><item></item><item></item></items>
                //do something here
            });
            xml.on('end', function(){
                // when processing finished for all objects/items in that file
                });
            });
        })
        .pipe(fs.createWriteStream('bigfile.xml'));
于 2016-02-12T12:38:13.583 に答える