【发布时间】:2022-01-03 10:50:08
【问题描述】:
我有一个像这样的树实体:
@Entity('structures')
@Tree('closure-table')
export class StructureEntity extends AbstractEntity<StructureDto> {
@Column()
name: string;
@TreeParent({ onDelete: 'CASCADE' })
parent: StructureEntity;
@TreeChildren()
children: StructureEntity[];
// Eager option for enable eager loading
@ManyToOne(
() => OrganizationEntity,
(organization) => organization.structures, { eager: true },
)
organization: OrganizationEntity;
dtoClass = StructureDto;
}
我使用带有“closure-table”类型的@Tree 装饰器,它允许我拥有像父子关系这样的树关系。
我这样得到树:
const structures = await this.structuresRepository.findTrees();
我必须在没有任何查询构建器的情况下使用findTrees() 方法来获取数据库中的所有树及其所有孩子、孩子的孩子等。
我的问题是,除了我的表中的父子关系之外,我还有与组织实体的多对一关系。它工作正常,我可以将所有关系的数据写入数据库,但是当我获取数据时,我错过了组织属性:
{
"id": 1,
"createdAt": "2021-06-11T13:17:16.000Z",
"updatedAt": "2021-06-11T13:17:54.552Z",
"name": "Parent",
"children": [
{
"id": 2,
"createdAt": "2021-06-11T13:54:53.774Z",
"updatedAt": "2021-06-11T13:59:40.997Z",
"name": "Child",
"children": []
}
]
}
组织实体:
@Entity({ name: 'organizations' })
export class OrganizationEntity extends AbstractEntity<OrganizationDto> {
@Column()
name: string;
@OneToMany(() => StructureEntity, (structure) => structure.organization)
structures: StructureEntity[];
dtoClass = OrganizationDto;
}
我怀疑这是一个 TypeORM 松弛,因为我不能使用预先加载来使用我的实体中的树关系从另一个表中获取数据。是否有任何使用树结构获取所有实体数据的选项?
【问题讨论】:
-
您找到解决方法了吗?我有同样的问题..
标签: node.js tree nestjs typeorm