数据库表um_department:
CREATE TABLE `um_department` (
`deptid` int(11) NOT NULL AUTO_INCREMENT, //部门id
`dept` varchar(64) NOT NULL DEFAULT '', //部门名字
`dupid` int(11) DEFAULT '0', //上级部门id,dupid=0表示此部门为顶级部门
`deptshow` varchar(127) DEFAULT '', //部门信息
PRIMARY KEY (`deptid`)
) ENGINE=MyISAM AUTO_INCREMENT=74 DEFAULT CHARSET=gbk;
现在要查出整个部门树的结构,返回下面这样的数据
[{deptid:1, dept: '部门1', dupid:0, deptshow: '', deptlist: [{deptid:2, dept: '部门2', dupid:1, deptshow: ''}, {deptid:3, dept: '部门3', dupid:1, deptshow: ''}]}]
用的mysql数据查询模块是nodejs-mysql-native,我发现我写的时候还是同步的思维,不正确,代码如下:
var deptlist = [];
db.query("SELECT * from um_department where dupid='0'")
.on("row", function(r) {
r.deptlist = getDeptList(r.deptid);
deptlist.push(r);
})
.on("end", function(r) {
console.log(deptlist);
});
function getDeptList(deptid) {
var deptlist = [];
db.query("SELECT * from um_department where dupid = '" + deptid + "'")
.on("row", function(r) {
r.deptlist = getDeptList(r.deptid);
deptlist.push(r);
})
.on("end", function(r) {
return deptlist;
});
}
请问如何正确的实现这个功能啊