使用for循环为方法分配值

时间:2019-11-05 13:01:32

标签: node.js for-loop

菜鸟问题。我想从csv中的单个列中读取值,然后通过await方法解析每个值以从API中提取数据并将数据附加到json。

这类似于下面的伪代码: i。)读取csv ['id'],ii。)将该列中的每个值添加到API调用中,iii。)追加到json,iv。)继续直到该列中的所有值都完成。

这是我到目前为止编写的代码:

async function writeData() {
    const csv = require('csv-parser')
    const results = [];
    fs.createReadStream('C:\\Users\\User\\Documents\\testingclean.csv')
        .pipe(csv())
        .on('data',(data)=> results.push(data))
        .on('end', () => {
            console.log(results)
        });
    const cookieJar = await getCookieJar();
    const fighter = await boxrec.getPersonById(cookieJar,468841);

这目前仅读取ID为468841的人的csv并提取数据,对于node.js来说我是一个新手,无法根据我所在的Id列中的值弄清楚如何将值分配给getPersonById遍历。

以下是我的数据示例:

{
    '': '49',
    id: '512687',
    name: 'Joey Dawejko',
    age: '29.0',
    last6: "['win', 'win', 'loss', 'loss', 'loss', 'win']",
    points: '34',
    rating: '50',
    stance: 'orthodox',
    draw: '4',
    loss: '7',
    win: '20',
    countryid: 'US',
    countryName: 'USA',
    cityName: 'Philadelphia'
  }
]
{
  '': '0',
  id: '489762',
  name: 'Andy Ruiz Jr',
  hasBoutScheduled: 'True',
  last6: "['win', 'loss', 'win', 'win', 'win', 'win']",
  points: '754',
  rating: '100',
  stance: 'orthodox',
  draw: '0',
  loss: '1',
  win: '33',
  countryid: 'US',
  countryName: 'USA',
  cityName: 'Imperial'

1 个答案:

答案 0 :(得分:0)

我相信这会引起注意。

async function writeData() {
  const csv = require('csv-parser')
  const results = [];
  fs.createReadStream('C:\\Users\\User\\Documents\\testingclean.csv')
      .pipe(csv())
      .on('data',(data)=> results.push(data))
      .on('end', async () => {
        const cookieJar = await getCookieJar();
        const promises = [];
        results.forEach((data) => {
          promises.push(boxrec.getPersonById(cookieJar,data.id));
        })

        const fighters = await Promise.all(promises); // Fighters is an array
        fighters.forEach((fighter) => {
          // DO STUFF USING FIGHTER
        })
      });
}