Nodejs根据父子结构输出tree

写APP的时候的时候做了个二级评论功能,在数据库中查出父级id和子级id(即关联父级id),Nodejs中将list转成tree,先记录下,以后可以直接用~

// utils.js
module.exports = {
    list2tree: function (json, id, pid) { // json-数据 id-父级 pid-子级
        var ret = [], o = {};

        function add(arr, data) {
            var obj = data;
            obj.children = [];
            o[data[id]] = obj;
            arr.push(obj);
        }

        json.forEach(x => {
            if (!!o[x[pid]]) {
                add(o[x[pid]].children, x);
            } else {
                add(ret, x);
            }
        });

        return ret;
    }
};
// 核心代码
const utils = require("../utils"); // 引入模块

router.get("/comment", function (req, res) { // 用了Express路由
    let params = req.query;

    let query, queryParams;
    query = "SELECT xxxxxxxx"; // 查询sql
    queryParams = [...]; // 前端传的参数

    CONNECTION = mysql.createConnection(MYSQL_CONFIG); // MYSQL_CONFIG - 数据库配置
    CONNECTION.connect();
    CONNECTION.query(query, queryParams, function (err, result) {
        if (err) {
            console.log('[SELECT ERROR] - ', err.message);
            res.send({code: -1, msg: "服务异常"});
            return;
        }

        let resultArr = utils.list2tree(result, 'id', 'pid'); // 对应的字段为id、pid
        res.send({code: 0, result: resultArr});
    });
    CONNECTION.end();
});

猜你喜欢

发表评论

最新发布