Website-Suche

typescript - Wie macht man eine OneToOne-Beziehung für mehrere vererbte Klassen optional?


Angenommen, ich habe eine Klasse Animal, von der Dog und Cat erben.

export class Animal extends BaseEntity{
    @PrimaryGeneratedColumn()
    id:number;
}

@Entity()
export class Cat extends Animal{
   ...
}

@Entity()
export class Dog extends Animal{
   ...
}

Jetzt möchte ich eine OneToOne-Beziehung mit ihrem Besitzer zeigen.

@Entity
export class Owner extends BaseEntity{
   ....
 
   @OneToOne()
   pet:???
}

Owner ist eine Klasse, die ein Attribut pet hat, das entweder eine Katze oder ein Hund sein kann. Wie kann ich dies mit typeorm erreichen?


Oder mache ich es falsch?

Antwort #1

So machst du es


@Entity()
@TableInheritance({ column: { type: "varchar", name: "type" } })
export class Content {
    
    @PrimaryGeneratedColumn()
    id: number;
 
    @Column()
    title: string;
    
    @Column()
    description: string;
    
}

@ChildEntity()
export class Photo extends Content {
    
    @Column()
    size: string;
    
}
@ChildEntity()
export class Question extends Content {
    
    @Column()
    answersCount: number;
    
}
@ChildEntity()
export class Post extends Content {
    
    @Column()
    viewCount: number;
    
}

Antwort #2

Sie können @ChildEntity() für Kinder und @Entity() für die Hauptklasse in TypeORM verwenden.

Verwandte Artikel