第三方模块推荐:mongoose-mpath 树状层次结构

mongoose-mpath 树状层次结构

说明

只是单纯的记录学习过程
官方地址~~~
还是推荐看 官方文档

使用前提

  1. 数据库为mongodb + node
  2. 需要树桩层次结构

优点

如果你想要这样的一个数据结构这个模块在适合不过了,超级方便。真的超级超级,而且提供其他接口,也是超级好。
树状层次机构

缺点

客观一点没有!如果我们在决定使用这个模块的时候,就一定要想清楚到底适不适合,如果是因为我们自己的逻辑出了问题,真的不是它的缺点呀。
例子:我们这个项目上确实体现了一点,因为项目是OA多层级部门就很适合这个呀。但功能需求整个树状结构需要公司,我们为了方便就直接将公司的信息放到了部门表里。但这样导致后来获取公司数据过分依赖部门表,导致公司表完全没有发挥他但作用,最致命的是部门表是替代不了公司表的因为某些数据比如ID,这样导致我们确实乱了

常用方法

创建方法:超级简单,就是在创建数据的时候加一个parent字段

const stockholm = new LocationModel({name: 'stockholm', parent: sweden});

查询的api:
假设我们现在有以下树形结构

africa
europe
 - norway
 - sweden
   -- stockholm
     --- skansen
  1. 返回文档的祖先:getAncestors()
const ancestors = await stockholm.getAncestors({});   
 //返回数据: (Array) [europe, sweden]
  1. 返回文档的所有子级:getAllChildren()
const children = await sweden.getAllChildren({});       
// 返回数据: (Array) [stockholm, skansen]
const children = await stockholm.getAllChildren({});    
//返回数据: (Array) [skansen]
  1. 返回文档的直接子级:getImmediateChildren()
const children = await europe.getImmediateChildren({});
// 返回数据:(Array) [norway, sweden]
const children = await sweden.getImmediateChildren({});    
// 返回数据:(Array) [stockholm]
  1. 超级好用的来了获取子级的树形结构: getChildrenTree()
europe.getChildrenTree()

/*--------返回数据-------------
[
  {
    'name': 'norway',
    'children': []
  },
  {
    'name': 'sweden',
    'children': [
        {
          'name': 'sthlm',
          'children': [
            {
              'name': 'skansen',
              'children': []          
            }
          ],
        }
    ]
   }  
]
*/

结束

最后愿我们持独立思考,不卑不亢不怂,长成自己想要的样子~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值