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