写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();
});