Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript fast csv正在引发异常:预期列标题不匹配_Javascript_Node.js_Csv - Fatal编程技术网

Javascript 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

我正在尝试使用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条记录。 我想捕捉这个错误,这样我就可以向用户指出错误


请建议。

我已经解决了。上述问题的解决办法是:

.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
错误或没有帮助,特别是在包含多种数据类型的大文件中,因为它破坏了解析。但我发现这确实起了作用