express+mongoose无限级分类查询(后端)

简介: express+mongoose无限级分类查询(后端)

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、请求菜单接口,数据格式为

6、注意最后一级分类没有children了


相关文章
|
1月前
|
存储 缓存 监控
微信团队分享:微信后端海量数据查询从1000ms降到100ms的技术实践
针对大数据量带来的查询性能问题,微信团队对数据层查询接口进行了针对性的优化,将平均查询速度从1000ms+优化到了100ms级别。本文为各位分享优化过程,希望对你有用!
34 2
|
10月前
|
JSON 前端开发 数据格式
MyBatisPlus实现后端集合查询------in
MyBatisPlus实现后端集合查询------in
|
网络架构
【Node.js+koa--后端管理系统】设计标签创建、查询、接口 | 标签绑定到动态
【Node.js+koa--后端管理系统】设计标签创建、查询、接口 | 标签绑定到动态
134 0
【Node.js+koa--后端管理系统】设计标签创建、查询、接口 | 标签绑定到动态
|
中间件
【Node.js+koa--后端管理系统】设计评论发布、修改、查询、删除接口
【Node.js+koa--后端管理系统】设计评论发布、修改、查询、删除接口
197 0
【Node.js+koa--后端管理系统】设计评论发布、修改、查询、删除接口
|
中间件 数据库
【Node.js+koa--后端管理系统】设计动态发布、修改、查询、删除接口
【Node.js+koa--后端管理系统】设计动态发布、修改、查询、删除接口
189 0
【Node.js+koa--后端管理系统】设计动态发布、修改、查询、删除接口
express学习23-多人管理项目11邮箱地址查询信息
express学习23-多人管理项目11邮箱地址查询信息
92 0
express学习23-多人管理项目11邮箱地址查询信息
|
JavaScript
使用nodejs应用查询SAP HANA Express Edition里的数据
其实我们使用的是SAP针对SAP HANA Express Editor发布的nodejs SDK. npm init创建一个新的nodejs应用:
使用nodejs应用查询SAP HANA Express Edition里的数据
|
数据库连接 PHP Apache
使用PHP应用查询SAP HANA Express Edition里的数据
使用PHP应用查询SAP HANA Express Edition里的数据
126 0
使用PHP应用查询SAP HANA Express Edition里的数据