I have trouble with Promise {<pending>} in node js

37 Views Asked by At
const fs = require('fs');
const csv = require('csv-parser');
const axios = require('axios');
const { createObjectCsvWriter } = require('csv-writer');

console.time('ScriptExec');
let outputData = [];

const csvWriter = createObjectCsvWriter({path: 'output.csv'});

async function makeGraphQLRequest(apiUrl, query, variables) {
    try {
        const response = await axios.post(apiUrl, {
            query: query,
            variables: variables,
        });
        return response.data.data.price_trader_log
        .map(entry => entry.values[entry.values.length - 1].price_trader_new);
    } catch (error) {
        setTimeout(() => makeGraphQLRequest(), 2000);
    }
}


const apiUrl = 'https://wiki.cs.money/api/graphql';
const query = `
query price_trader_log($name_ids: [Int!]!) {
  price_trader_log(input: {name_ids: $name_ids}) {
    name_id
    values {
      price_trader_new
    }
  }
}
`;


fs.createReadStream('variables.csv')
.pipe(csv()).on('data', async (row) => {
    const nameIds = row.name_ids.split(',').map(id => parseInt(id.trim()));
    const scrapInfo = [];
    console.log(nameIds);

    for (const pickId of nameIds) {
        console.log(pickId);
        if ( pickId > 0 ) {
            const variables = { name_ids: pickId };
            makeGraphQLRequest(apiUrl, query, variables)
                .then(result => scrapInfo.push(result))  //console.log(result) is Promise {<pending>}
                .catch(err => console.error(err));
        } else {
            scrapInfo.push(pickId);
        }
    }
    outputData.push( {title: row.title, prices: scrapInfo} );
    console.log(outputData);
}).on('end', () => {    // this saver doesn`t work
    csvWriter.writeRecords(outputData) 
        .then(() => console.log('Data sucsesfully writed in output.csv'))
        .catch(err => console.error('ERROR in wrhite csv process:', err))
    console.timeEnd('ScriptExec');
  });

Example of variables.csv: title,name_ids usp-s|whiteout,"1087302,1086843,1086836,1087237,1087212" usp-s|targetacquired,"1083799,1083764,1083692,1083800,1084013" usp-s|killconfirmed,"942,896,1332,7411,1042" usp-s|killconfirmed_stattrak,"13665,13822,2429,587,2595" usp-s|printstream,"1092369,1092414,1092339,1092498,1092346" usp-s|printstream_stattrak,"1092439,1092295,1092405,1092442,1092422" usp-s|orangeanolis,"1087219,1087263,1087249,0,0" usp-s|darkwater,"0,1581,10527,0,0"

I try await makeGraphQLRequest and block .then().catch()

0

There are 0 best solutions below