Nodejs - 导入CSV,不断变成“缓冲区”

时间:2018-03-28 21:28:19

标签: node.js

我有一个将csv导入数组的脚本。当我不添加任何选项并使用常规csv文件时,它工作正常,但是一旦我把它混合起来就会出现问题:

var fs = require('fs');
var csv = require('fast-csv');
var counter = 0;

// var csvData = [];
let csvStream = csv.fromPath("C:\\A_projects\\3-23-2018 Twillio testing\\test\\test.txt",delimiter="\t",headers=true)
  .on("data", function(record){
      csvStream.pause();

      if(counter < 10)
      {
          let acct_id = record.acct_id;
          let acct_id2 = record.acct_id2;
          let address = record.address;
          let date = record.date;
          let appt_time = record.appt_time;
          let name = record.name;
          let num1 = record.num1;
          let num2 = record.num2;
          let num3 = record.num3;
      }
      console.log(record);
      ++counter;
      csvStream.resume();
  }).on("end", function(){
      console.log("Job is done!!");
  }).on("error", function(){
      console.log(err);
  });

如果我删除分隔符和标题选项,它会将每一行作为一个数组吐出,但当我添加其中一个或两个选项时,它现在是一个“缓冲区”

Buffer(71) [91, 34, 97, 99, 99, 116, 95, 105, …]

我甚至尝试添加“objectMode = true”选项,它应该将任何缓冲区转换回字符串,它仍然作为缓冲区出现。奇怪的是,使用它作为唯一选项使其成为缓冲区,无论它是真还是假。

首先,我该如何解决这个问题?第二,它首先不应该是一个缓冲区,但是如果我必须处理这个问题,是否有合理的方法将我假设的普通数据转换回字符串?

1 个答案:

答案 0 :(得分:1)

我刚刚意识到我做错了什么。我的选项语法不正确:

let csvStream = csv.fromPath("C:\\x\\test.txt",objectMode=true)

应该如下:

let csvStream = csv.fromPath("C:\\x\\test.txt", { objectMode:true } )