1、model/model.js文件中 menu模型集合设计
1. //菜单表 2. let menuSchema = new Schema({ 3. title:String, //菜单名称 4. path:String, //路由 5. level:Number, //分类级别 6. pid:{ //父级菜单的_id 7. type:Schema.Types.ObjectId, 8. ref:"menu" 9. } 10. }) 11. 12. let menuModel = mongoose.model("menu",menuSchema,"menu")
2、添加菜单时
1. //添加一级菜单 2. menuModel.create({ 3. title:"工作台", 4. path:"/workBack", 5. level:1 6. 7. }) 8. 9. //添加二级菜单 10. menuModel.create({ 11. title:"管理中心", 12. path:"/workBack/dashboard", 13. level:2, 14. pid:"63fca97066b73470f7c41b62" 15. }) 16. 17. //三级...以此类推
3、mongodb集合结构为
4、无限级查询
1. //获取全部菜单(测试接口) 2. //无限级查询全部菜单 3. router.get("/menuList", async (req, res) => { 4. let menus = await menuModel.find({}).lean() 5. let data = [] 6. let jsonMenu = {} 7. 8. menus.forEach(item => { 9. jsonMenu[item._id] = item 10. }) 11. 12. menus.forEach(item => { 13. if (!item["pid"]) { 14. data.push(item) 15. } else { 16. 17. if (!jsonMenu[item["pid"]]["children"]) { 18. jsonMenu[item["pid"]]["children"] = [] 19. } 20. 21. jsonMenu[item["pid"]]["children"].push(item) 22. } 23. }) 24. 25. res.send({ 26. code: 200, 27. msg: "菜单获取成功", 28. data 29. }) 30. })
5、请求菜单接口,数据格式为