关于菜单的查询

来源:8-7 菜单列表递归实现(下)

慕粉3266517

2021-06-01

1、如果想要模糊查询,应该怎么写。如,菜单名称中输入“系统”,点击查询,列表应出现系统设置这一条。
2、如果单独查询子菜单名称,通过这个递归调用出不来,它不是从parentid为null开始的。

写回答

4回答

stb烙饼

2021-06-01

1、模糊查询:使用正则表达式,伪代码:

Menu.find({menuName: /系统/})
或者
Menu.find({menuNane: {$regex: /系统/}})


2、查询子菜单:函数getTreeMenu,它的第二个参数的作用是用来指定要查询菜单的父菜单ID,并不是写死的null,你完全可以用某一个菜单的父菜单ID去查询,而不是调用getMenuTree时非要传null。

0
1
慕粉3266517
非常感谢!
2021-06-01
共1条回复

河畔一角

2021-06-04

模糊查询,目前Mongo的官方提供正则的方式,这跟关系型数据库还是有很大的不同的,其它同学回答的都是正解。

1、Menu.find({menuNane: {$regex: /系统/}})

2、Menu.find({menuName: /系统/})

关于直接查询子菜单的问题,需要在后端分情况处理,的确不是有的子菜单不是以null开始的,所以需要提前对数据做判断,

如果查询出来的菜单parentId不是[null]说明是子菜单,则直接返回,不需要做递归处理

0
0

慕粉3266517

提问者

2021-06-02

2、如果查询子菜单或者查找名字为“查看”的按钮,还是没办法用树形显示,干脆直接用列表显示

// 如果查询条件不为空,直接返回查询结果.否则返回树形结果
  if (JSON.stringify(params) != "{}") {
    ctx.body = util.success(menuList)
  }
  else {
    let treeList = getTreeMenu(menuList, null, [])
    ctx.body = util.success(treeList)
  }


0
0

慕粉3266517

提问者

2021-06-02

1、模糊查询将查询条件改为

 if (menuName) params.menuName = { $regex: menuName }


0
0

Vue3+ElementPlus+Koa2 全栈开发后台系统

从前端晋级到全栈,让你的未来发展有更多可能

1069 学习 · 580 问题

查看课程