0

node+express インスタンスにアップロードされた CSV ファイルを解析するために、node-csv-parser ( http://www.adaltas.com/projects/node-csv/from.html ) を使用しています。「レコード」イベントでエラーが発生した場合、ファイルの解析を停止してエラーをクライアントに返したいのですが、「エラー」イベントが数回呼び出されます (CSV ファイルの各レコードに対して)。

これが私のコードです:

  csv()
  .from(req.files.file.path)
  .on('record', function(data, index){
    var date = data[0];
    var vehicle = data[1];
    var taxId = data[4];
    var customer = data[7];
    var address = data[8] + ' ' + data[9];
    var quantity = data[10]
    console.log(date + ' | ' + vechile + ' | ' + taxId + ' | ' + customer + ' | ' + address + ' | ' + quantity);
  })
  .on('end', function() {
    fs.unlinkSync(req.files.file.path);
    res.end();
  })
  .on('error', function(error) {
    fs.unlinkSync(req.files.file.path);
    console.log('HI');
    res.end('error|' + req.files.file.name);
  });

上記のように、完全なレコードをコンソールに出力するときに意図的なエラーが発生します。vehicle という変数の型が間違っています (vechile)。次に、'error' イベントが複数回発生し、'HI' がコンソールに数回出力されます。

私が望むのは、最初のエラーが発生したときにファイルの解析を中断して、ファイルを適切に削除し (現在は数回削除され、2 回目は失敗しています)、エラーをクライアントに返すことです。

end() メソッドを使用してみましたが、うまくいきませんでした。

私は正しい軌道に乗っていますか?何かアドバイスはありますか?

前もって感謝します

4

3 に答える 3

0

この問題に対する詳細な回答をGitHubに書き込みました: https ://github.com/wdavidw/node-csv-parser/issues/58

于 2012-11-05T21:14:23.763 に答える