متین طیبی نیا
3 سال پیش توسط متین طیبی نیا مطرح شد
0 پاسخ

ایجاد تابع بازگشتی در node js برای نمایش دسته بندی چند سطحی

سلام
این لیست دسته بندی های من هستش

    /* 1 */
{
    "_id" : ObjectId("61373cd5a27081de77aa91a0"),
    "parent" : null,
    "name" : "کامپیوتر",
    "slug" : "کامپیوتر",
    "createdAt" : ISODate("2021-09-07T10:20:05.719Z"),
    "updatedAt" : ISODate("2021-09-07T10:20:05.719Z"),
    "__v" : 0
}

/* 2 */
{
    "_id" : ObjectId("61373d3cd11b349108fc8016"),
    "parent" : ObjectId("61373cd5a27081de77aa91a0"),
    "name" : "صفحه نمایش",
    "slug" : "صفحه-نمایش",
    "createdAt" : ISODate("2021-09-07T10:21:48.666Z"),
    "updatedAt" : ISODate("2021-09-07T10:21:48.666Z"),
    "__v" : 0
}

/* 3 */
{
    "_id" : ObjectId("6137b85b4e312bdbf612042e"),
    "parent" : ObjectId("61373d3cd11b349108fc8016"),
    "name" : "ال سی دی",
    "slug" : "ال-سی-دی",
    "createdAt" : ISODate("2021-09-07T19:07:07.415Z"),
    "updatedAt" : ISODate("2021-09-07T19:07:07.415Z"),
    "__v" : 0
}

من برای مرتبط سازی این لیست (بر اساس فیلد parent)از یک تابع بازگشتی استفاده کردم 👇

    async index(req, res, next) {

        let categories = [];

        let cats = await Category.find({})

        async function f(cats, parent = null) {
            for (const cat of cats) {
                if (cat.parent===parent) {
                    categories.push({
                        data: {
                            cat,
                            chileCategory: await f(cats, cat._id)
                        }
                    })
                }
            }
        }
        await f(cats,)      
        return res.json(categories);
    }

ولی این تابع کار نمیکنه و فقط دسته بندی اصلی میفرسته
(زمانی که فیلد parent مساوی null باشه یعنی دسته بندی یک دسته بندی اصلی هستش)

[
{
"cat": {
"_id": "61373cd5a27081de77aa91a0",
"parent": null,
"name": "کامپیوتر",
"slug": "کامپیوتر",
"createdAt": "2021-09-07T10:20:05.719Z",
"updatedAt": "2021-09-07T10:20:05.719Z",
"__v": 0,
"id": "61373cd5a27081de77aa91a0"
}
}
]

چطوری این مشکل حل کنم که زیر مجموعه های این دسته بندی نمایش داده بشه

@ali.bayat


ثبت پرسش جدید

به همدیگه کمک کنیم

به متین طیبی نیا کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام