mongoose 多表联合问题?
问题描述:
两个表角色表 和 菜单表 ,不同角色返回不同得菜单 ,因为初学mongoose有好多都不会 想请教下
roleSchema.js
const mongoose = require('mongoose');
const RoleSchema = new mongoose.Schema({
name:{
type:String,
unique:true,
required:true
},
menu:[{
type: mongoose.Types.ObjectId,
ref : 'menu'
}]
})
module.exports = mongoose.model('roles',RoleSchema);
menuSchema.js
const mongoose = require('mongoose');
const Menu = new mongoose.Schema({
path: {
type: String,
required: true
},
pid: {
display: '父节点',
default: 0,
type: mongoose.Schema.Types.Mixed
},
name: {
unique: true,
type: String,
required: true
},
})
module.exports = mongoose.model('menu',Menu);
添加角色
const RoleAdd = async(ctx)=>{
//let req = ctx.request.body;
let req = {name:'管理员',menu:[]}
let newRole = new RolesSchema(req);
let result = await newRole.save()
ctx.body = {
code:200,
data:result
}
}
添加菜单
const AddMenu = async(ctx)=>{
//let data =ctx.request.body;
let data = {path:'/home',name:'首页'}
if(!data.pid)data.pid = 0;
let role = new MenuSchema(data)
let result = await role.save()
ctx.body={
code:200,
msg:'添加成功',
data:result
}
}
角色绑定菜单
const RoleAddMenu = async(ctx)=>{
//let req = ctx.request.body;
let req = {role_id:'5dcd016be542053d90537540',menu_id:'5dcd015ce542053d9053753f'};
let role = await RolesSchema.findByIdAndUpdate(req.role_id,
{ $push: { 'menu':mongoose.Types.ObjectId(req.menu_id)}},{upsert:false}
);
ctx.body = {
code:200,
data:role
}
}
获取关联
const GetMyMenu = async(ctx)=>{
let req = ctx.query.role_id;
console.log(req)
let result =await RolesSchema.findOne({_id:req})
.populate({
path: 'menu',
model: {path: 'menu'}
}).exec(function (err, data) {
console.log(data);
})
console.log(result)
ctx.body = {
code:200,
msg:result
}
}
结果查不出关联得内容 .exec回调中获取得data 为undifind
下面贴出表结构
role表
menu表
可见menu表中列表2得_id 与 role表中超级管理员的menu数组中的的第一个_id 一致
但是为什么就是无法查出联表的数据 是我哪里代码有问题嘛?
求解答
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个
model
我看了下文档,没有看到类似的写法。你换成这样试试: