最近在学习 express 写后端服务的 API,其中想生成页面菜单的内容从数据库获取,可是遇到一个问题,希望在这里可以获取些帮助。
1、连接mysql 的已经封装好了,可以正常连接
2、一共是需要执行两步查询,第一步先得到 Level=0 的一级菜单项
3、第二步希望在第一步的结果中每一项都添加一个对象来保存第二步查询得到的二级菜单结果。
代码如下:
// 连接数据库
module.exports = {
dbConnect: (sql, sqlArr, cb) => {
const pool = mysql.createPool(db_config);
pool.getConnection((err, connection) => {
if (err) {
console.log(err)
return
}
connection.query(sql, sqlArr, cb)
connection.release();
}
)
}
}
获取数据
const express = require('express')
const mydb = require('../model/index')
// Get Menulist
exports.getMenuList = async (req, res, next) => {
var sql = 'select * from tblMenuList WHERE Level=?'
var sqlArr = ['0']
mydb.dbConnect(sql, sqlArr, function (err, result) {
if (err) res.send('Get MenuList fail')
for (i = 0; i < result.length; i++) {
var sql = 'select * from tblMenuList WHERE SubLevel=?'
var sqlArr = [result[i].SubLevel]
mydb.dbConnect(sql, sqlArr, function (err, subresult) {
if (err) res.send('Get SubMenuList fail')
console.log(subresult);
// result[i].children=subresult
})
}
res.send(result)
})
}
下面这是第二步查询出来的结果,是可以通过 console.log 的形式看到的,可是假如我把这行的注释打开 result[i].children=subresult ,想把 subresult 作为一个对象添加给 result.children 的时候,就会报错。提示:TypeError: Cannot set properties of undefined (setting 'children').应该是函数内部数据往外传递出了问题,可是我没有找到解决的办法,希望大佬们给些建议,谢谢了。
[
RowDataPacket {
ID: 1,
Name: 'Wafer 管理',
Level: '0',
SubLevel: 11,
CreateDate: null,
UpdateDate: 2021-12-26T14:02:08.000Z
},
RowDataPacket {
ID: 2,
Name: 'Wafer 登记',
Level: '1',
SubLevel: 11,
CreateDate: null,
UpdateDate: 2021-12-26T14:02:09.000Z
},
RowDataPacket {
ID: 3,
Name: 'Wafer 查询',
Level: '1',
SubLevel: 11,
CreateDate: null,
UpdateDate: 2021-12-26T14:02:10.000Z
},
RowDataPacket {
ID: 4,
Name: 'Wafer 历史',
Level: '1',
SubLevel: 11,
CreateDate: null,
UpdateDate: 2021-12-26T14:02:12.000Z
}
]
[
RowDataPacket {
ID: 5,
Name: '用户管理',
Level: '0',
SubLevel: 12,
CreateDate: null,
UpdateDate: 2021-12-26T11:05:03.000Z
},
RowDataPacket {
ID: 6,
Name: '权限管理',
Level: '1',
SubLevel: 12,
CreateDate: null,
UpdateDate: 2021-12-26T11:05:21.000Z
},
RowDataPacket {
ID: 7,
Name: '角色管理',
Level: '1',
SubLevel: 12,
CreateDate: null,
UpdateDate: 2021-12-26T11:06:34.000Z
}
]