Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

245
Views
¿Cómo puedo obtener los artículos de una categoría con su subcategoría?

Tengo dos modelos para Categoría y subcategoría.

El modelo de categoría devuelve una matriz de datos como

 category = [ {_id: '1', name: 'Appliances', slug: 'appliances'}, {_id: '2', name: 'Computer', slug: 'computer'}, {_id: '3', name: 'Phones', slug: 'phones'}, ]

El modelo de subcategoría devuelve

 subcategory = [ { _id: '101', name: 'fridge', category: '1'}, {_id: '102', name: 'Radio', category: '1'}, {_id: '103', name: 'Apple', category: '3'}, {_id: '105', name: 'Toshiba', category: '2'}, {_id: '109', name: 'HP', category: '2'}, ]

Quiero devolver algo que se vea así:

 [ {_id: '1', name: 'Appliances, subCategories: [ { _id: '101', name: 'fridge', category: '1'}, {_id: '102', name: 'Radio', category: '1'}, ] }, {_id: '2', name: 'Computer, subCategories: [ {_id: '105', name: 'Toshiba', category: '2'}, {_id: '109', name: 'HP', category: '2'}, ] }, {_id: '3', name: 'Computer, subCategories: [ {_id: '103', name: 'Apple', category: '3'}, ] } ]

Aquí está el código que tengo hasta ahora

 const [categories, setCategories] = useState([]) const [subCategories, setSubCategories] = useState([]) useEffect(() => { loadSubCategories() }, []) const loadSubCategories = async () => { const res = await getAllSubCategories() setCategories(res.subCategory) setTotal(res.length) } const getAllSubCategories = () => { return request('/subCategories', { method: 'GET', }) }

Esto solo carga mis subcategorías aunque. mi ruta de categoría es /categories

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

 category = [ {_id: '1', name: 'Appliances', slug: 'appliances'}, {_id: '2', name: 'Computer', slug: 'computer'}, {_id: '3', name: 'Phones', slug: 'phones'}, ] subcategory = [ { _id: '101', name: 'fridge', category: '1'}, {_id: '102', name: 'Radio', category: '1'}, {_id: '103', name: 'Apple', category: '3'}, {_id: '105', name: 'Toshiba', category: '2'}, {_id: '109', name: 'HP', category: '2'}, ] const result = category.map(e => { e.subCategories = subcategory.filter(a => a.category == e._id); return e; }) console.log(result);

about 4 years ago · Juan Pablo Isaza Report

0

const category = [ {_id: '1', name: 'Appliances', slug: 'appliances'}, {_id: '2', name: 'Computer', slug: 'computer'}, {_id: '3', name: 'Phones', slug: 'phones'}, ]; const subcategory = [ { _id: '101', name: 'fridge', category: '1'}, {_id: '102', name: 'Radio', category: '1'}, {_id: '103', name: 'Apple', category: '3'}, {_id: '105', name: 'Toshiba', category: '2'}, {_id: '109', name: 'HP', category: '2'}, ]; const newCategoryArray = category.map(v => { const sub = []; subcategory.forEach(i => { if(i.category === v._id){ sub.push(i); } }) v.subcategory = sub; return v; });

https://playcode.io/873264/

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!