Javascript fast csv正在引发异常:预期列标题不匹配
我正在尝试使用fast csv验证数据。 我的代码看起来像Javascript fast csv正在引发异常:预期列标题不匹配,javascript,node.js,csv,Javascript,Node.js,Csv,我正在尝试使用fast csv验证数据。 我的代码看起来像 var fileName = req.files.uploadcsv.path; var fs = require("fs"); var stream = fs.createReadStream(fileName); var csv = require("fast-csv"); csv .fromStream(stream, { headers: true }) .validate(func
var fileName = req.files.uploadcsv.path;
var fs = require("fs");
var stream = fs.createReadStream(fileName);
var csv = require("fast-csv");
csv
.fromStream(stream, {
headers: true
})
.validate(function(data) {
if (data.age > 18)
return false;
else
return true;
}
}
它对我上传的每个文件都很好,但如果我上传了带有额外数据的文件,它说
错误:意外错误:应为列标题不匹配:获得5列:6
实际上,该文件有5个标题,但它包含的数据集有6条记录。
我想捕捉这个错误,这样我就可以向用户指出错误
请建议。我已经解决了。上述问题的解决办法是:
.on("error", function(data){
return false;
})
我在.validate()之后实现了这段代码,并且它成功了。您也可以这样做:
csv
.fromStream(stream, {
headers: true,
strictColumnHandling: true
})
.validate(function(data) {
if (data.age > 18)
return false;
else
return true;
}
.on("data-invalid", function(data){
// do something like log for example
});
如果这可能在将来帮助某人: 我经历了同样的错误,并注意到我的一行中包含,--导致fast csv在认为添加了新列时抛出错误。通过在引号中转义“单元格”解决。已解决: 这是因为快速csv在认为添加了新列时抛出错误。因此,请使用丢弃未映射列选项来丢弃额外的列
csv.fromStream(stream, {
headers: true,
discardUnmappedColumns: true
}).validate(function(data) {
if (data.age > 18)
return false;
else
return true;
}
}
你能解释一下strictColumnHandling:true是如何解决这个问题的吗?谢谢。在我的例子中,返回
false
错误或没有帮助,特别是在包含多种数据类型的大文件中,因为它破坏了解析。但我发现这确实起了作用