Динамическое меню Мангуст
Я пытаюсь построить динамическое меню в 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 }) });
Что я уже пробовал:
я пытался изменить свой метод, чтобы заставить его работать, но я не знаю, что не так, я сейчас пытаюсь найти кого-то, кто может предложить некоторые рекомендации в интернете