Search code examples
javascriptnode.jsaxioscoinmarketcap

How can I get value in [Object]


I'm working on coinmarketcap.com api and I need only name and price and save to Mongo. It is working but at the end undefined value returned. Price value is under the quote. What is wrong ?

const axios = require('axios');
let response = null;
new Promise(async (resolve, reject) => {
  try {
    response = await axios.get('https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?limit=2', {
      headers: {
        'X-CMC_PRO_API_KEY': 'myKey',
      },
    });
  } catch(ex) {
    response = null;
    console.log(ex);
    reject(ex);
  }
  if (response) {
  const coin = response.data;
  console.dir(coin, { depth: null }); 
  console.log(coin.data.map(a => { a.name,  a.quote.price}));
    resolve(coin);
  }
}
);

Solution

  • quote contains prices identified by their keys like this:

    "quote": {
                    "USD": {
                        "price": 42177.91536878145,
                        "volume_24h": 18068350418.6717,
                        "volume_change_24h": 8.1323,
                        "percent_change_1h": -0.02144759,
                        "percent_change_24h": -0.48235688,
                        "percent_change_7d": -0.65364542,
                        "percent_change_30d": -1.87762517,
                        "percent_change_60d": -13.80076009,
                        "percent_change_90d": -30.24448455,
                        "market_cap": 799599134284.9932,
                        "market_cap_dominance": 42.7605,
                        "fully_diluted_market_cap": 885736222744.41,
                        "last_updated": "2022-02-14T09:35:00.000Z"
                    }
                }
    

    so in order to solve the bug, you need to specify the proper key here (USD for example):

    I tested this code and it works please copy it inside the separate js file and check the result(Replace your API key):

    const axios = require('axios');
    let response = null;
    async function getCoin(){
      try {
        const response = await axios.get('https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?limit=2', {
          headers: {
            'X-CMC_PRO_API_KEY': 'KEY',
          },
        });
        const coin = response.data;
        const result = coin.data.map(a => ({ name: a.name,  price: a.quote['USD'].price}))
        console.log(result)
        return coin;
      } catch(ex) {
        console.log(ex);
        throw ex;
      }
    }
    getCoin()