Присвоение значений методу, использующему цикл for - PullRequest
0 голосов
/ 05 ноября 2019

Немного нового вопроса. Я хотел бы прочитать значения из одного столбца в 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);

В настоящее время он читает только данные csv и pull для человека с идентификатором 468841, я очень плохо знаком с node.js и не могу понять, какназначить значение getPersonById на основе значения в столбце Id, через которое я перебираю.

Вот пример моих данных:

{
    '': '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 голосов
/ 05 ноября 2019

Я полагаю, что это поднимет настроение.

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
        })
      });
}
...