从.on事件内部将对象推到数组上

问题描述 投票:0回答:1

我有一些csv数据,我需要将这些数据解析为要构建的API的对象数组。

我能够看到我正在使用的解析器正在按预期方式工作:

const csv = require('fast-csv')
const fs = require('fs');
const path = require('path');
let results = [];

async function parseCSVFromCSV(_sourceCSVFilePath){
  return new Promise((resolve, reject) => {
    fs.createReadStream(_sourceCSVFilePath)
    .pipe(csv.parse({ headers: true }))
    .on('error', error => reject(error)) 
    .on('data', row => {
      console.log(row);
      results.push(row);
    })
    resolve(results);
  })
}

因此console.log(row)将按预期方式打印出已解析的对象,但结果对象为空。我需要此解析后的数据,但是无论我如何尝试,都无法获得使用解析后的csv填充的结果。

关于我在这里缺少什么的任何指导?

javascript node.js csv es6-promise
1个回答
0
投票

所以我知道了我需要做什么:

const fs = require('fs');
const path = require('path');
const csv = require('fast-csv');

async function getData(){
    let arrOfObj = [];

    fs.createReadStream(path.resolve(__dirname, 'downloads', 'sampleData.csv'))
    .pipe(csv.parse({ headers: true }))
    .on('error', error => console.error(error))
    .on('data', row => 
        {arrOfObj.push(row); 
        //console.log(row);
    })
    .on('end', rowCount => { printData(arrOfObj);  
    });
}

async function printData(_arrOfObj){
   console.log(_arrOfObj);
}

getData();


基本上,期望在end事件内部无法访问完成的数组。这使它可以暴露于事件之外。希望这可以帮助需要这样做的其他人。

© www.soinside.com 2019 - 2024. All rights reserved.