我有一个将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”选项,它应该将任何缓冲区转换回字符串,它仍然作为缓冲区出现。奇怪的是,使用它作为唯一选项使其成为缓冲区,无论它是真还是假。
首先,我该如何解决这个问题?第二,它首先不应该是一个缓冲区,但是如果我必须处理这个问题,是否有合理的方法将我假设的普通数据转换回字符串?
答案 0 :(得分:1)
我刚刚意识到我做错了什么。我的选项语法不正确:
let csvStream = csv.fromPath("C:\\x\\test.txt",objectMode=true)
应该如下:
let csvStream = csv.fromPath("C:\\x\\test.txt", { objectMode:true } )