node.js 功能点树形结构操作

来源:互联网 发布:php admin value 编辑:程序博客网 时间:2024/04/29 13:11

node.js 生成递归的树形结构

function treeNode(id, pid, text, children) {    this.id = id;    this.pid = pid;    this.text = text;    this.children = children;}//测试数据var data = [{ 'id': 1, 'pid': 0, 'text': '主节点' }, { 'id': 2, 'pid': 1, 'text': '分1' }, { 'id': 3, 'pid': 0, 'text': '主2' }, { 'id': 4, 'pid': 3, 'text': 211 }];function getTreeFunction(data, pid) {    var treelist = [];    for (var i = 0; i < data.length; i++) {        if (data[i].pid == pid) {            var tree = new treeNode(data[i].id, data[i].pid, data[i].text, getTreeFunction(data, data[i].id));            treelist.push(tree)        }    }    return treelist;}//exports.getTreeFunction = getTreeFunction;var tree = getTreeFunction(data, 0);console.log(tree[0].children)

递归禁用子节点

var treeFuncID = [];//删除功能点exports.delete = function (data, callback) {    data.IsActive = 1;    treeFuncID.length = 0;    treeFuncID.push({        'FunctionID': data.FunctionID    });    functionDAL.queryAllFunctions(data, function (err, results) {        if (err) {            return callback(true, results);        }        //根据FunctionID判断该功能点是否存在        if (results != undefined && results.length > 0) {            var querydata = {                'ApplicationID': results[0].ApplicationID            }            //此方法用于从数据库取出当前应用的所有功能点数据            functionDAL.queryAllFunctions(querydata, function (err, results) {                //得到子节点的所有functionid                function getMultiTreeID(FunctionID) {                    var querydata = {                        'ParentID': FunctionID,                        'IsActive': 1                    }                    var data = [];                    for (var j in results) {                        if (results[j].ParentID == FunctionID) {                            data.push({ 'FunctionID': results[j].FunctionID });                        }                    }                    if (data != undefined && data.length > 0) {                        for (var i in data) {                            getMultiTreeID(data[i].FunctionID);                            treeFuncID.push({                                'FunctionID': data[i].FunctionID                            });                        }                    }                }//DFS查找功能点数据,将其push到treeFunctID数组中                getMultiTreeID(data.FunctionID);//同步                //禁用功能点                functionDAL.delete(treeFuncID, function (err, results) {                    if (err) {                        return callback(true, results);                    }                    return callback(false, results);                });            });        } else {            return callback(true, '该功能点已被禁用')        }    });};

其中functionDAL.queryAllFunctions();用于得到数据库数据

1 0