相关疑难解决方法(0)

NodeJS,promises,streams - 处理大型CSV文件

我需要构建一个处理大型CSV文件的函数,以便在bluebird.map()调用中使用.考虑到文件的潜在大小,我想使用流媒体.

此函数应接受流(CSV文件)和函数(处理流中的块)并在读取文件结束(已解决)或错误(拒绝)时返回承诺.

所以,我从:

'use strict';

var _ = require('lodash');
var promise = require('bluebird');
var csv = require('csv');
var stream = require('stream');

var pgp = require('pg-promise')({promiseLib: promise});

api.parsers.processCsvStream = function(passedStream, processor) {

  var parser = csv.parse(passedStream, {trim: true});
  passedStream.pipe(parser);

  // use readable or data event?
  parser.on('readable', function() {
    // call processor, which may be async
    // how do I throttle the amount of promises generated
  });

  var db = pgp(api.config.mailroom.fileMakerDbConfig);

  return new Promise(function(resolve, reject) {
    parser.on('end', resolve);
    parser.on('error', reject);
  });

} …
Run Code Online (Sandbox Code Playgroud)

node.js promise bluebird pg-promise

11
推荐指数
2
解决办法
6057
查看次数

标签 统计

bluebird ×1

node.js ×1

pg-promise ×1

promise ×1