Du kan selv henvise til dine relationer. Her er et eksempel på en simpel rettet graf (alias en node kan have en forælder og flere børn).
@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[];
}
En vigtig note at huske på er, at disse relationer ikke automatisk indlæses, når du læser et objekt fra DB'en med find*
funktioner.
For faktisk at indlæse dem, skal du bruge forespørgselsbyggeren i øjeblikket og slutte dig til dem. (Du kan deltage i flere niveauer.) Et eksempel:
let allServices = await this.repository.createQueryBuilder('category')
.andWhere('category.price IS NULL')
.innerJoinAndSelect('category.children', 'product')
.leftJoinAndSelect('product.children', 'addon')
.getMany();
Bemærk venligst, hvordan jeg brugte forskellige navne til at henvise til dem (category
, product
, og addon
).