介绍一款插件 mongoose-materialized,github上可以查找相应的用法:
首先安装到项目中
npm i mongoose-materialized -S
在获取列表的接口(cate.controller.js)中,可以这样写:
function reverseTree(data,parentid){
var result = [],
temp;
// 原来传递进来的data是数据模型的对象,在数据模型没有定义字段的情况下是不能向数据模型中新增一个字段的
// 所以我们将它转成字符串,再转成 object,现在这个 object 就变成了普通的 javascript 对象
var data = JSON.parse(JSON.stringify(data));
for(var i in data){
if( data[i].parentId === parentid ){
result.push( data[i] );
temp = reverseTree(data, data[i]._id);
if( temp.length>0 ){
data[i].children = temp;
}
}
}
return result;
}
exports.list = function(req,res,next){
Cate.find({},function(err,data){
var rpTree = reverseTree(data,null);
res.json(rpTree);
})
}