我正在使用 node-csv-parser ( http://www.adaltas.com/projects/node-csv/from.html ) 来解析上传到 node+express 实例的 CSV 文件。当“记录”事件发生错误时,我想停止文件解析并将错误返回给客户端,但“错误”事件被多次调用(对于 CSV 文件中的每条记录)。
这是我的代码:
csv()
.from(req.files.file.path)
.on('record', function(data, index){
var date = data[0];
var vehicle = data[1];
var taxId = data[4];
var customer = data[7];
var address = data[8] + ' ' + data[9];
var quantity = data[10]
console.log(date + ' | ' + vechile + ' | ' + taxId + ' | ' + customer + ' | ' + address + ' | ' + quantity);
})
.on('end', function() {
fs.unlinkSync(req.files.file.path);
res.end();
})
.on('error', function(error) {
fs.unlinkSync(req.files.file.path);
console.log('HI');
res.end('error|' + req.files.file.name);
});
正如您在上面看到的,打印控制台完整记录时存在故意错误。名为vehicle 的变量输入错误(vechile)。然后多次触发“错误”事件,将“HI”多次打印到控制台。
我想要的是在第一个错误发生时中断文件解析,这样我就可以正确地删除文件(现在它被多次删除,第二次失败)并将错误返回给客户端。
我尝试使用 end() 方法,但没有成功。
我在正确的轨道上吗?有什么建议吗?
提前致谢