使用TypeORM获取自引用关系中的数据,你可以按照以下步骤进行操作:
@ManyToOne
装饰器定义父级关系,并使用@OneToMany
装饰器定义子级关系。import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, OneToMany } from 'typeorm';
@Entity()
export class Category {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToOne(() => Category, category => category.children)
parent: Category;
@OneToMany(() => Category, category => category.parent)
children: Category[];
}
在上面的代码中,我们创建了一个名为Category
的实体类,它具有一个自引用的关系。@ManyToOne
装饰器定义了父级关系,@OneToMany
装饰器定义了子级关系。
getRepository
方法获取实体类的存储库,并使用查询方法来获取自引用关系的数据。import { getRepository } from 'typeorm';
// 获取Category实体类的存储库
const categoryRepository = getRepository(Category);
// 获取所有顶级分类(没有父级的分类)
const topLevelCategories = await categoryRepository.find({ parent: null });
// 遍历顶级分类,并获取其子级分类
for (const category of topLevelCategories) {
const children = await categoryRepository.find({ parent: category });
console.log(`Category ${category.name} has children:`, children);
}
在上面的代码中,我们使用getRepository
方法获取Category
实体类的存储库。然后,我们使用find
方法来查询顶级分类(没有父级的分类)。接下来,我们遍历顶级分类,并使用find
方法查询每个顶级分类的子级分类。
领取专属 10元无门槛券
手把手带您无忧上云