首页 > 解决方案 > TypeORM 混凝土表和与其他表的关系

问题描述

我有名为 User 、 Page 、 Element 和 Class 的类 Element 是一个抽象类,它将成为基类。那么我将有不同的类扩展元素(例如:Element1,Element2 ...)。

类元素:

    export abstract class Element extends BaseEntity {
    
        @PrimaryGeneratedColumn()
        id: number;
        
        //Adding other common Fields...
    
        @ManyToOne(type => User, user => user.blocks, { eager: false })
        @JoinColumn({name:"userId"})
        user: User;
        @Exclude()
        @Column({ select: false })
        userId: number;
    
    
        @ManyToOne(type => Page, page => page.elements, { eager: false })//error 
        @JoinColumn({name:"pageId"})
        page: Page;
        @Column()
        pageId: number;
    
    }

班级页面:

    @Entity()
    export class Page extends BaseEntity {
    
        @PrimaryGeneratedColumn()
        id: number;
    
         //Adding other Fields...
    
        @ManyToOne(type => User, user => user.pages, { eager: false })
        @JoinColumn({name:"userId"})
        user: User;
        @Exclude()
        @Column({ select: false })
        userId: number;

        //relation with element
        @OneToMany(type => Element, element=> element.page, { eager: true })//error
        elements: Element[] | null;
    
    }

班级用户:

    @Entity()
    @Unique(["email"])
    export class User extends BaseEntity {
        @PrimaryGeneratedColumn()
        id: number;
      
          //Adding other Fields...

        //relation with page
        @OneToMany(type => Page, page => page.user,{ eager: true })
        pages: Page[];
    
        //relation with block
        @OneToMany(type => Element, element=> element.user,{ eager: true })
        elements: Element[];
    
    }

类元素1:

    @Entity()
    export class Element1 extends Element{
    
       //Adding other Fields..
    
    }

错误:

Unable to connect to the database. Retrying (1)... +65ms
Error: Entity metadata for Page#elements was not found. Check if you specified a correct entity object and if it's connected in the connection options

我的问题:

1-我是否正确编写了 TypeORM 混凝土表的代码?

2-如果它是正确的?问题是因为在类元素(基类型)中定义关系而不是在子类型类中?

3-最后,有没有更好的方法来做到这一点?

提前感谢您的帮助。

标签: inheritancenestjstypeorm

解决方案


推荐阅读