alym karim Ответов: 0

Динамическое меню Мангуст


Я пытаюсь построить динамическое меню в nodejs с помощью мангуста, но мой метод не работает. я получаю список пунктов меню с пустым coreMongooseArray в качестве его дочернего свойства [{model.children = coreMongooseArray(0)}, {model.children = coreMongooseArray(0)}]



, но я должен получить список пунктов меню, каждый из которых имеет свой собственный список дочерних пунктов меню. [{модель.дети = [модель]}, {модель.дети = [модели, модели], {Модель.дети = нуль}]

ниже приведены мои данные о методе, маршруте и схеме формы. кто-нибудь, помогите!

Маршрут
router.get('/scripts/menu', async function(req, res, next) {
    console.log('menutree is working');
    var initial = await Menu.find().populate('parent');
    var menutree = await Menu.GetMenuTree(initial, null, '5dfe0009551b160edcdc89ce');
    await res.status(200).send(menutree)
})


Схема
const menuSchema = new Mongoose.Schema({
    title: {
        type: String,
        trim: true,
        required: true
    },
    parent: {
        type: Mongoose.Schema.Types.ObjectId,
        ref: 'Menu'
    },
    active: {
        type: Boolean,
    },
    page: {
        type: String,
        trim: true
    },
    category: {
        type: Mongoose.Schema.Types.ObjectId,
        ref: 'Category',
        required: true
    },
    children: [Mongoose.Schema.Types.Mixed]

}, {
    timestamps: true
})


Метод

menuSchema.static('GetMenuTree', async function(unfilteredlist, parent = undefined, category) {

    var MenuObj = this;

    var filteredlist = unfilteredlist.filter(function(item) {
        return item.parent == parent && item.category == category;
    })


    filteredlist = filteredlist.map(async function(item) {

        item.children = await MenuObj.GetMenuTree(unfilteredlist, item._id, item.category);
        return item

    })

    return Promise.all(filteredlist).then(function(results) {
        return results
    })

});


Что я уже пробовал:

я пытался изменить свой метод, чтобы заставить его работать, но я не знаю, что не так, я сейчас пытаюсь найти кого-то, кто может предложить некоторые рекомендации в интернете

0 Ответов