我正在尝试写入 DB,同时从流中的大 CSV 文件读取,但我得到的只是“超出最大调用堆栈大小”错误。并且总是在 12969 行之后。如果我不保存到数据库,一切正常。我的代码示例:
const s = fs.createReadStream(path.resolve(__dirname, '../../data.csv'))
.pipe(csv.parse({delimiter: ';', columns: true }))
.pipe(es.mapSync(line => {
s.pause();
if(validate(line)){
const newStation = new Station({
...line
});
newStation
.save()
.then((item) => {
overlaps++;
s.resume();
}).catch(err => {
console.log(err.message);
s.resume();
throw err;
});
}else{
s.resume();
}
}))
.on('error', function(err){
res.end(`Reading error: ${err.message}`);
console.log('Error while reading file.', err.message);
})
.on('end', function(){
res.end(`Done reading, items: ${overlaps}`);
console.log(`Done reading items`)
});