### Node + Express + MongoDB 后台管理系统模板的后端接口
```shell
1. npm install 下载相关依赖
2. node server.js 启动接口
```
#### menus"树形"路由列表设计
1. MongoDB是文档型数据库,可以直接存储树形数据,但树形结构不便于对每一个menu路由节点单独操作(增删改查)
2. 仿照MySQL 表的设计方式,将menus路由列表展平,由pid字段连接
```javascript
//为了便于对 单个"权限路由"进行增删改查, 给每个"权限路由"增加pid字段存储父节点的id
const MenuSchema = mongoose.Schema({
pid: {type: String, default: ''},
name: {type: String, default: ''},
code: {type: String, default: ''},
//......
})
//查询数据库时,将"权限路由"列表递归,由pid字段重新生成一棵存储"权限路由"信息的树
function menuListToTree(list) {
if(!list.length) return
const children = []
const treeNode = list.shift()
for (let i = 0; i < list.length; i++) {
if(treeNode._id.toString() === list[i].pid) {
children.push(list[i])
}
}
menuListToTree(list)
treeNode.children = children
return treeNode
}
```
#### menus权限路由列表的"动态"生成
```javascript
//roleSelect字段存储当前用户的角色信息
const UserSchema = mongoose.Schema({
email: {type: String, unique: true},
//......
roleSelect: {type: [String], default: []}
})
//menuSelect字段存储当前角色 menu权限路由id
const RoleSchema = mongoose.Schema({
roleName: {type: String, default: ''},
//......
menuSelect: {type: [String], default: []}
})
//首先获取当前用户的roleSelect角色列表
const user = await User.findOne({_id: req.userId})
let roleSelect = await Promise.all(user.roleSelect.map((role) => Role.findOne({_id: role})))
//将角色列表展平并去重
roleSelect = roleSelect.map((role) => role._doc.menuSelect).flat(Infinity)
const menusSet = new Set(roleSelect)
//查询所有的menus权限路由列表,循环判断当前角色是否拥有权限
let menus = await Menu.find().exec()
const routes = []
const buttons = []
for(let i = 0; i < menus.length; i++) {
//按钮权限
if(menus[i].level === 4 && menusSet.has(menus[i]._id.toString())) {
buttons.push(menus[i].code)
}else if(menus[i].code !== '' && menusSet.has(menus[i]._id.toString())){//路由权限
routes.push(menus[i].code)
}
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于node js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行!
资源推荐
资源详情
资源评论
收起资源包目录
Node + Express + MongoDB 后台管理系统模板的后端接口.zip (18个子文件)
project_demo
ssl
ssl.md 44B
app.js 929B
server.js 609B
utils
secret.js 93B
index.js 2KB
package.json 429B
package-lock.json 187KB
model
role
index.js 387B
menu
index.js 597B
user
index.js 567B
index.js 447B
router
permission
role
index.js 2KB
menu
index.js 2KB
user
index.js 3KB
index.js 1KB
index.js 688B
.gitignore 115B
README.md 2KB
共 18 条
- 1
资源评论
白话机器学习
- 粉丝: 1w+
- 资源: 7671
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功