2017-11-08 9 views
0

ノードcsv-parserで作業していますが、読み込みストリームがstd inです。パーサーにパイプしています。パーサ読み取り可能な関数の中で、私はこのデータをアップロードするために非同期HTTP呼び出しを行っています。この間、パーサーは読書を一時停止します。非同期呼び出しが終了するまで。一時停止ノードのデータをアップロードするときのcsv-parser

var parse = require('csv-parse'); 
 
    var output = []; 
 
// Create the parser 
 
    var parser = parse({delimiter: ',', columns: true, trim: true}); 
 
    
 
    parser.on('readable', function() { 
 
    while (record = parser.read()) { 
 
     console.log('Still reading'); 
 
     var jsonRec = convertIpToInt(record); 
 
     var jsonData = JSON.stringify(jsonRec); 
 
     output.push(new Buffer(jsonData + "\n")); 
 
     //parser.pause(); 
 
     var assertPromise = uploadBatches1(indexName, function() { 
 
      //parser.resume(); 
 
      console.log('Returned'); 
 
     }); 
 
    } 
 
    }); 
 

 
    function uploadBatches1(indexToAssert, cb) { 
 
    //uploads data got form parser 
 
    }

+0

あなたは以下の私の答えはあなたを助けたかどうかを確認する機会を持っていましたか?より多くの情報や支援が必要ですか? – binarymax

答えて

0

CSV-解析が読めるストリームを公開しているので、あなたは同様にparser.pause()

でストリームを一時停止することができ、あなたの更新が完了したとき、あなたはparser.resume()を呼び出すことができます。 parser.isPaused()を使用して事前に再開する必要があるかどうかを確認することもできます。

あなたは、一時停止の方法がここにい読めるストリームの詳細については、何を読むことができます:上記に基づきhttps://nodejs.org/api/stream.html#stream_readable_pause

は、あなたの代わりにwhile (record = parser.read())ループの、parser.on('data')読めるストリームイベントを実装する必要があります。ストリームを一時停止すると、自分でreadメソッドをアクティブに呼び出す場合は何も起こりません。

はそうのようなあなたのコードの再構築を検討して、ファイルシステムから読み込まれparser.pipeを使用します。

var parse = require('csv-parse'); 
 
var output = []; 
 
// Create the parser 
 
var parser = parse({delimiter: ',', columns: true, trim: true}); 
 

 
parser.on('data', function() { 
 
    console.log('Still reading'); 
 
    var jsonRec = convertIpToInt(record); 
 
    var jsonData = JSON.stringify(jsonRec); 
 
    output.push(new Buffer(jsonData + "\n")); 
 
    parser.pause(); 
 
    var assertPromise = uploadBatches1(indexName, function() { 
 
     parser.resume(); 
 
     console.log('Returned'); 
 
    }); 
 
}); 
 

 
function uploadBatches1(indexToAssert, cb) { 
 
    //uploads data got form parser 
 
}

関連する問題