Anda dapat merujuk sendiri hubungan Anda. Berikut adalah contoh graf berarah sederhana (alias sebuah simpul dapat memiliki orang tua dan banyak anak).
@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[];
}
Catatan penting yang perlu diingat adalah bahwa relasi ini tidak dimuat secara otomatis saat membaca objek dari DB dengan find*
fungsi.
Untuk benar-benar memuatnya, Anda harus menggunakan pembuat kueri saat ini dan bergabung dengan mereka. (Anda dapat bergabung dengan beberapa level.) Contoh:
let allServices = await this.repository.createQueryBuilder('category')
.andWhere('category.price IS NULL')
.innerJoinAndSelect('category.children', 'product')
.leftJoinAndSelect('product.children', 'addon')
.getMany();
Harap perhatikan bagaimana saya menggunakan nama yang berbeda untuk merujuknya (category
, product
, dan addon
).