Можете сами да се справите с вашите отношения. Ето пример за проста насочена графика (известна още като възел може да има родител и няколко деца).
@Entity()
export class Service extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
@Index({ unique: true })
title: string;
@ManyToOne(type => Service, service => service.children)
parent: Service;
@OneToMany(type => Service, service => service.parent)
children: Service[];
}
Важна забележка, която трябва да имате предвид е, че тези отношения не се зареждат автоматично при четене на обект от DB с find*
функции.
За да ги заредите реално, трябва да използвате конструктора на заявки в момента и да се присъедините към тях. (Можете да се присъедините към няколко нива.) Пример:
let allServices = await this.repository.createQueryBuilder('category')
.andWhere('category.price IS NULL')
.innerJoinAndSelect('category.children', 'product')
.leftJoinAndSelect('product.children', 'addon')
.getMany();
Моля, обърнете внимание как използвах различни имена, за да ги позовавам (category
, product
и addon
).