findAncestorsTree 在 TypeORM 3 中不返回父级

问题描述 投票:0回答:1

我正在使用 TypeORM 物化树。有一个名为

organization
的实体,每个组织都有一个父级,并且可以有多个子级。

@Entity('organizations')
@Tree('materialized-path')
export class Organization {
  @Column()
  name: string;

  @TreeChildren()
  children?: Organization[];

  @TreeParent()
  parent?: Organization;
}

我打电话给

findAncestorsTree
去接树上孩子的父母。根据 TypeORM 文档,它应该返回所有直接子项的父组织(带有“父项的父项”),但它只返回没有任何父项的子项。

const organization = await this.organizationRepository.findOne({
   where: { id },
});
return this.dataSource.manager.getTreeRepository(Organization).findAncestorsTree(organization);

我得到的回应:

{
    "id": "1",
    "name": "A3-121"
}

我期望得到什么:

{
    "id": "1",
    "name": "A3-121",
    "parent": {
       "id": "2",
       "name": "A2-12",
       "parent": {
           ...,
           "parent": {
               ...
           }
       }
    }
}

如何获取树中子组织的所有父组织?

二手包:

"typeorm": "^0.3.16"
"@nestjs/typeorm": "^9.0.1"
postgresql nestjs typeorm node.js-typeorm
1个回答
0
投票

我也有同样的问题。目前,我使用了递归函数来解决问题。

function getAllNestedParents(obj: any): any[] {
    if (!obj?.parent) {
      return [];
    }

    const parents: any[] = [obj.parent];
    return parents.concat(getAllNestedParents(obj.parent));
  }

请将

any
类型替换为您的用例。

© www.soinside.com 2019 - 2024. All rights reserved.