skip to Main Content

I’m facing some issue in for loop while creating an object from array of object.I have an object as this in node js app:

I am working for rest api have to get the response properly.

[
    {
        "issuer_id": 2639,
        "job_title": "Sales Manager",
        "hr-contact": "9767865459",
        "adress": "bangalore",
        "image": "http://localhost:3003/public/uploads/company-logos/undefined",
        "getEmployerDetail": [
            {
                "issuer_id": 2639,
                "Field_of_activity": "Jobs",
                "id": 111,
                "Section": "Communes",
                "Content": "Mühlwald",
                "foa_section_content_id": 111
            },
            {
                "issuer_id": 2639,
                "Field_of_activity": "Jobs",
                "id": 112,
                "Section": "Communes",
                "Content": "Wolkenstein in Gröden",
                "foa_section_content_id": 112
            },
            {
                "issuer_id": 2639,
                "Field_of_activity": "Jobs",
                "id": 113,
                "Section": "Communes",
                "Content": "Schnals",
                "foa_section_content_id": 113
            },
            {
                "issuer_id": 2639,
                "Field_of_activity": "Jobs",
                "id": 150,
                "Section": "Professional field",
                "Content": "Marketing, Graphics, PR",
                "foa_section_content_id": 150
            },
            {
                "issuer_id": 2639,
                "Field_of_activity": "Jobs",
                "id": 162,
                "Section": "Branch",
                "Content": "Banks, Finance, Insurance",
                "foa_section_content_id": 162
            },
            {
                "issuer_id": 2639,
                "Field_of_activity": "Jobs",
                "id": 215,
                "Section": "Benefits",
                "Content": "Enrolment programme",
                "foa_section_content_id": 215
            },
            {
                "issuer_id": 2639,
                "Field_of_activity": "Jobs",
                "id": 220,
                "Section": "Benefits",
                "Content": "Childcare",
                "foa_section_content_id": 220
            }
        ]
    }
]

I want to return object like this which contains all the Material as array, Name and there value in array of object like this:

I want to get result using for loop.

[
    {
        "issuer_id": 2639,
        "job_title": "Sales Manager",
        "hr-contact": "9767865459",
        "adress": "bangalore",
        "image": "http://localhost:3003/public/uploads/company-logos/undefined",
"employmentType": [
        {
            "id": 198,
            "Employment_type": "Freelancer"
        }
    ],
    "professionalField": [
        {
            "id": 150,
            "Professional_field": "Marketing, Graphics, PR"
        }
    ],
    "benefits": [
        {
            "id": 215,
            "Benefits": "Enrolment programme"
        },
        {
            "id": 219,
            "Benefits": "Canteen"
        },
        {
            "id": 220,
            "Benefits": "Childcare"
        },
        {
            "id": 221,
            "Benefits": "Employee events"
        },
        {
            "id": 222,
            "Benefits": "Employee mobile phone"
        },
        {
            "id": 223,
            "Benefits": "Employee notebook"
        },
        {
            "id": 224,
            "Benefits": "Employee bonuses"
        }
    ],
    "branch": [
        {
            "id": 162,
            "Branch": "Banks, Finance, Insurance"
        }
    ],
    "communes": [],
    "positionLevel": [],
    "skillSets": [],
    "languageSkills": [],
    "skillRepository": [],
    "jobCluster": [],
    "jobClusterDescription": []
}
]

2

Answers


  1. Chosen as BEST ANSWER

    This First Query we are getting some data and we are attaching with data using ID , above you sent the logic for this api can you write the logic i have used in foreach logic below.I need the response which you wrote above using that logic.

    const getEmployerByID = async (id: string, jobName: string) => {
            const connection = await getConnection();
            try {
                await connection.beginTransaction();
                let getPremiumEmployer = `SELECT DISTINCT rifp.issuer_id,rifp.foa_property_id,fpl.name,rifp.text_value as "company name",rifp.text_value,
                rifp.int_value,rifp.float_value, fp.datatype FROM rel_account_issuer rai inner join account on account.account_id=rai.account_id inner join 
                 rel_issuer_foa_property rifp join foa_property_localization fpl on rifp.foa_property_id=fpl.foa_property_id  inner join foa_property fp on 
                 fp.foa_property_id=rifp.foa_property_id where rifp.issuer_id = ${id} and fpl.name IN ('job title','company_name',
                 'adress','image','job type','company_youtube','cover image',
                 'company_facebook','company_linkedin','company_instagram','overview','hr-contact','number_of_employees','company_gallery','section_description')  order by rifp.foa_property_id;`
                const [employerRes]: any = await connection.execute(getPremiumEmployer, [id]);
                let [getEmployerDetail]: any = await connection.query(`SELECT DISTINCT rifsc.issuer_id,fl.name AS 'Field_of_activity',fscl.foa_section_content_id AS 'id', 
                fsl.name AS 'Section' , fscl.name AS 'Content', rifsc.foa_section_content_id FROM foa f 
                JOIN foa_section fs USING (foa_id) JOIN foa_localization fl USING (foa_id)  
                JOIN foa_section_content fsc USING (foa_section_id) 
                JOIN foa_section_localization fsl USING (foa_section_id) 
                JOIN foa_section_content_localization fscl USING (foa_section_content_id) 
                JOIN rel_issuer_foa_section_content rifsc USING (foa_section_content_id)   inner join
                rel_account_issuer rai inner join account on account.account_id=rai.account_id  WHERE rifsc.issuer_id =${id} `)  
                let values = employerRes.reduce((prev: any, curr: any) => ({
                    ...prev, [curr.issuer_id]: {
                        issuer_id: curr.issuer_id,
                        ...prev[curr.issuer_id], [(curr.name).replaceAll(' ', "_")]: curr[`${curr.datatype}_value`]
                    }
                }), {} as Record<string, any>)
                const jobCluster: any = []
                const jobClusterDescription: any = []
                const employer =["Benefits","Communes"]
                Object.values(values).forEach((x: any) => {
                    Object.values(getEmployerDetail).forEach((Benefit: any) => {
                        if (x.issuer_id == Benefit.issuer_id) {
                            Object.assign(values[id],{getEmployerDetail} )
                        }
                    })
                })     
            } catch (error) {
                throw error
            }
        }
    

  2. const data = [
      {
        "issuer_id": 2639,
        "job_title": "Sales Manager",
        "hr-contact": "9767865459",
        "adress": "bangalore",
        "image": "http://localhost:3003/public/uploads/company-logos/undefined",
        "getEmployerDetail": [
          {
            "issuer_id": 2639,
            "Field_of_activity": "Jobs",
            "id": 111,
            "Section": "Communes",
            "Content": "Mühlwald",
            "foa_section_content_id": 111
          },
          {
            "issuer_id": 2639,
            "Field_of_activity": "Jobs",
            "id": 112,
            "Section": "Communes",
            "Content": "Wolkenstein in Gröden",
            "foa_section_content_id": 112
          },
          {
            "issuer_id": 2639,
            "Field_of_activity": "Jobs",
            "id": 113,
            "Section": "Communes",
            "Content": "Schnals",
            "foa_section_content_id": 113
          },
          {
            "issuer_id": 2639,
            "Field_of_activity": "Jobs",
            "id": 150,
            "Section": "Professional field",
            "Content": "Marketing, Graphics, PR",
            "foa_section_content_id": 150
          },
          {
            "issuer_id": 2639,
            "Field_of_activity": "Jobs",
            "id": 162,
            "Section": "Branch",
            "Content": "Banks, Finance, Insurance",
            "foa_section_content_id": 162
          },
          {
            "issuer_id": 2639,
            "Field_of_activity": "Jobs",
            "id": 215,
            "Section": "Benefits",
            "Content": "Enrolment programme",
            "foa_section_content_id": 215
          },
          {
            "issuer_id": 2639,
            "Field_of_activity": "Jobs",
            "id": 220,
            "Section": "Benefits",
            "Content": "Childcare",
            "foa_section_content_id": 220
          }
        ]
      }
    ]
    
    
    
    const getGroupWithFor = (data) =>{
      const result = [];
    for (let i = 0; i < data.length; i++) {
      const detail = data[i].getEmployerDetail;
      delete data[i].getEmployerDetail;
      const group = data[i];
      for (let j = 0; j < detail.length; j++) {
        const section = detail[j].Section;
        const current = {
          [section]: detail[j].Content,
          id: detail[j].id
        }
        if (group[section]) {
          group[section].push(current)
        } else {
          group[section] = [current]
        }
      }
      result.push(group)
    }
      return result
    }
    
    const getGroupWithForEach = (data) => {
      const result = []
      data.forEach(detail => {
        const employerDetail = detail.getEmployerDetail;
        delete detail.getEmployerDetail;
        const group = detail;
        employerDetail.forEach(eachDetail => {
          const section = eachDetail.Section;
          const current = {
            [section]: eachDetail.Content,
            id: eachDetail.id
          }
          if (group[section]) {
            group[section].push(current)
          } else {
            group[section] = [current]
          }
        })
        result.push(group)
      })
      return result;
    }
    
    console.log(JSON.stringify(getGroupWithForEach(data), null, 2))
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search