Node.js: How To Catch A Value in JSON

Viewed 59

I am running a Node.js project. This is my response which I get from an API:

assets: [
  {
    id: '93b1d990-4110-11eb-b553-0b6473e34c34',
    clip_setting_id: '93a6e4d0-4110-11eb-8a7e-09b69bef45f7',
    name: '6c9cdb10-4110-11eb-bc48-096965779f51_1608282501.7416_cliperago_test_image_01.jpg',
    type: 'institute_logo',
  },
  {
    id: '93bf3390-4110-11eb-bee1-bf5b057e2905',
    clip_setting_id: '93a6e4d0-4110-11eb-8a7e-09b69bef45f7',
    name: '6c9cdb10-4110-11eb-bc48-096965779f51_1608282501.8143_cliperago_video_demo_02.mp4',
    type: 'pre_roll_video',  
  },
  {
    id: '93d3b550-4110-11eb-979a-4ddd3ec99c0f',
    clip_setting_id: '93a6e4d0-4110-11eb-8a7e-09b69bef45f7',
    name: '6c9cdb10-4110-11eb-bc48-096965779f51_1608282501.9016_cliperago_video_demo_03.mp4',
    type: 'out_roll_video', 
  }
]

I want to get the name of the object with type out_roll_video

This is my code

axios.get('https://testrider/api/v1/student/bb533310/group_assets')
  .then(response => {

  let a = response.data.data.clips_assets
  console.log(a);
  // console.log(response.data.data.clips_assets.assets);
  a.forEach(obj => {
    Object.entries(obj).forEach(([key, value]) => {
        console.log(`${key}`);
        if(`${value}` == 'out_roll_video'){
                console.log(` ${key}`);
                if(`${key}` == 'name'){
                  console.log(` ${value}`);
          }

        }
    });
    console.log('-------------------');
  })
  .catch(error => {
    console.log("failed");
  });
2 Answers

You can use .find to get a specific name according to a condition. If you want to get more than one, you can use .filter to get the objects matching, and then get the names using .map:

const assets= [
  {
    id: '93b1d990-4110-11eb-b553-0b6473e34c34',
    clip_setting_id: '93a6e4d0-4110-11eb-8a7e-09b69bef45f7',
    name: '6c9cdb10-4110-11eb-bc48-096965779f51_1608282501.7416_cliperago_test_image_01.jpg',
    type: 'institute_logo',
  },
  {
    id: '93bf3390-4110-11eb-bee1-bf5b057e2905',
    clip_setting_id: '93a6e4d0-4110-11eb-8a7e-09b69bef45f7',
    name: '6c9cdb10-4110-11eb-bc48-096965779f51_1608282501.8143_cliperago_video_demo_02.mp4',
    type: 'pre_roll_video',  
  },
  {
    id: '93d3b550-4110-11eb-979a-4ddd3ec99c0f',
    clip_setting_id: '93a6e4d0-4110-11eb-8a7e-09b69bef45f7',
    name: '6c9cdb10-4110-11eb-bc48-096965779f51_1608282501.9016_cliperago_video_demo_03.mp4',
    type: 'out_roll_video', 
  }
];
  
const { name } = assets.find(e => e.type === 'out_roll_video') || {};
console.log(name);

const names = assets
  .filter(e => e.type === 'out_roll_video' || e.type === 'pre_roll_video')
  .map(e => e.name);
console.log(names);

you can use find method like so,

Model. find(type:'outrolevideo')

This is return a array.

Related