node+mongodb实现3级树形菜单
router.post('/getJurisdiction', function (req, res) {
db.find('sys_menu', { type: '0' }, function (err, d) {
db.find('sys_menu', { type: '1' }, function (err, data) {
var result = data;
for (let i = 0; i < result.length; i++) {
db.find('sys_menu', { parent_id: result[i].menu_id }, function (err, data1) {
for (var j = 0; j < data1.length; j++) {
if (result[i].menu_id == data1[j].parent_id) {
result[i].children = data1
}
}
if (i == result.length - 1) {
//定义一个空数组接收三级菜单
var newObj2 = [];
//循环一级菜单
for (var l = 0; l < d.length; l++) {
//记录一级菜单的menu_id
var nameO1 = d[l].menu_id;
//定义一个空数组,接收2级和3级的数据
var arr = [];
for (var k = 0; k < result.length; k++) {
//记录二级和三级的parent_id
var nameO2 = result[k].parent_id;
//判断相等
if (nameO1 === nameO2) {
//把对应的二级和三级菜单push进arr中
arr.push(result[k]);
}
}
//把一级菜单的每一项转换成后端使用的字符串格式
var clonedObj = JSON.parse(JSON.stringify(d[l]))
//把id对应的二级和三级赋值给对应的一级菜单
clonedObj.children = arr;
//把最后的数据push进外部定义的空数组并返回给前段
newObj2.push(clonedObj);
}
res.send(newObj2)
}
})
}
})
})
})

浙公网安备 33010602011771号