आप अपने संबंधों को आत्म-संदर्भित कर सकते हैं। यहां एक सरल निर्देशित ग्राफ का उदाहरण दिया गया है (उर्फ नोड में माता-पिता और कई बच्चे हो सकते हैं)।
@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[];
}
ध्यान में रखने के लिए एक महत्वपूर्ण नोट यह है कि डीबी से किसी ऑब्जेक्ट को 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
)।