Estoy trabajando en un sitio web de comercio electrónico. He creado un modelo de mangosta para todas las categorías. Pero incluyendo la identificación principal para la categoría que es una subcategoría. cuando recibe una solicitud, toda la categoría se encuentra en databess. Está bien, pero quiero enviar la categoría de forma anidada. Por eso escribo así.
// This is router Router.get('/categories', async (req, res) => { const createCategory = (categories, parentId = null) => { const categoryList = [] let category if (parentId === null) { category = categories.filter(cat => cat.parentId === undefined); } else { category = categories.filter(cat => cat.parentId === parentId) } for (let cate of category) { categoryList.push({ _id: cate._id, name: cate.name, slug: cate.slug, children: createCategory(categories, cate._id) }) } return categoryList } try { const categories = await Category.find({}) const categoryList = createCategory(categories) res.status(200).json({ categoryList }) } catch (error) { res.status(500).json("server side error") } }) // This is mongoose model const mongoose = require('mongoose'); const categorySchema = new mongoose.Schema({ name: { type: String, required: true, trim: true, unique: true }, slug: { type: String, required: true, unique: true }, parentId: { type: mongoose.Schema.Types.ObjectId } }, { timestamps: true }) module.exports = mongoose.model("Category", categorySchema)El problema es que cuando trato de obtener datos de Clint, solo se genera una categoría de nivel raíz que no tiene una identificación principal. pero la matriz de niños está vacía así.
{ "categoryList": [ { "_id": "613af0410977fb9fefd2e605", "name": "Electronics", "slug": "Electronics", "children": [] } ] }Creo que la función recursiva "createCategory" no funciona.
por favor alguien que me ayude soy nuevo en esto...