Fast-CSV 引发异常:预计列标题不匹配
fast-csv is throwing exception : column header mismatch expected
我正在尝试使用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(function(data) {
if (data.age > 18)
return false;
else
return true;
}
}
它适用于我上传的每个文件,但是如果我上传了包含额外数据的文件,它会说错误:意外错误:预期列标题不匹配:5 列获得:6实际上该文件有 5 个标题,但它包含的数据集有 6 条记录。我想捕获此错误,以便我可以将用户指向错误。
请指教。
已求解:这是因为快速 csv 在认为添加了新列时抛出错误。所以使用丢弃未映射的列选项,丢弃多余的列
csv.fromStream(stream, {
headers: true,
discardUnmappedColumns: true
}).validate(function(data) {
if (data.age > 18)
return false;
else
return true;
}
}
我已经解决了。上述问题的解决方案是:
.on("error", function(data){
return false;
})
我已经在 .validate() 之后实现了这段代码并且它起作用了。
如果将来可能对某人有所帮助:我遇到了同样的错误,并注意到我的一行包含一个 , -- 导致快速 csv 在认为添加了新列时抛出错误。通过转义引号中的"单元格"来解决。
你也可以这样做:
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
});
相关文章:
- 高库存时期时间与时区不匹配
- 单元格的工具提示或标题不显示超过2000个字符
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- Javascript:图像与单选按钮的值不匹配
- 文本区域(jQuery)的结果不匹配
- 如果状态不匹配,则缩小为丑陋
- 为什么我网页的facebook点赞数与该网页的facebook页面不匹配
- 使用jscodeshift添加表达式时,错误{..}与类型字符串不匹配
- JavaScript正则表达式不匹配
- row.entity.xxxx属性doensn'排序后不匹配
- Url.Content中的Url不匹配
- 控件坐标与组坐标不匹配
- 使用正则表达式查找字符串中的不匹配字符
- CSS Media Query 和 Javascript/jQuery 不匹配
- 始终在 jQuery 自动完成中显示特定选项,即使它与输入不匹配
- 如果项目不匹配,则显示变量
- 正则表达式匹配 JQM 路由器插件中的“项目”但不匹配“项目”
- Fast-CSV 引发异常:预计列标题不匹配
- Internet Explorer 9 中的类型不匹配错误:将<标题>添加到内联 SVG
- 尝试匹配名字标题.或不匹配(视情况而定)