Loopbackjs 如何在环回4中包含所有潜在层的嵌套关系?

Loopbackjs 如何在环回4中包含所有潜在层的嵌套关系?,loopbackjs,loopback4,Loopbackjs,Loopback4,我正在尝试创建一个RESTAPI,在该API中,公司中的所有员工都按层次顺序返回(没有经理的员工位于基础树上,而他们管理的人员位于基础树下,以此类推) 在从存储库调用数据时,我将employees[]关系和一个相同的嵌套关系包含在筛选器中。目前,对employees的调用仅发生在前两层,而employees[]关系未显示在第三层,因此无法查看其后的层 以下是调用前两层关系的代码部分: filter = { include: [ { re

我正在尝试创建一个RESTAPI,在该API中,公司中的所有员工都按层次顺序返回(没有经理的员工位于基础树上,而他们管理的人员位于基础树下,以此类推)

在从存储库调用数据时,我将employees[]关系和一个相同的嵌套关系包含在筛选器中。目前,对employees的调用仅发生在前两层,而employees[]关系未显示在第三层,因此无法查看其后的层

以下是调用前两层关系的代码部分:

filter = {
        include: [
          {
            relation: 'employees',
            scope: {
              include: [{relation: 'employees'}],
            },
          },
        ],
        where: {managerId: -1},
      };

是否有一种方法可以声明此筛选器,以便它可以扩展到我的层次结构可能具有的所有层?还是我必须添加我认为需要的尽可能多的新范围?

您可能无法在单个筛选器子句中实现这一点。最好递归地获取每个层的底层员工

编辑 事实上,如果我们知道有多少最大层,我们确实可以在filter子句本身中进行递归。当没有更多的子层时,它也会中断递归。那么您的filter子句将如下所示

let filter = {
  include: {
    relation: 'employees'
  },
  where: {managerId: -1},
};

let childLayer = {
  relation : 'employees'
};

let previousLayer = filter.include;
for(let i=0; i<=10; i++){  //do this for 10 layers
  previousLayer.scope = {
    include : JSON.parse(JSON.stringify(childLayer))  //to avoid reference carry forwards
  };
  previousLayer = previousLayer.scope.include;
}

//do the query here using filter object
let过滤器={
包括:{
关系:“雇员”
},
其中:{managerId:-1},
};
让子层={
关系:“雇员”
};
让previousLayer=filter.include;
for(设i=0;i