bashleigh / typeorm-polymorphic

Typeorm polymorphic relationship management
MIT License
198 stars 38 forks source link

Polymorphic Inheritance #18

Open Gonzalo9823 opened 3 years ago

Gonzalo9823 commented 3 years ago

Hi! I have a question regarding inheritance.

I have a Organization class (not an entity) and many entities that inherit from this class such as Grower, Company, Client, etc.

What I wan't to do is to have a UserOrganizationRole entity that polymorphically points to this different entities but when I add the PolymorphicChildren decorator to Organization it gives me the error "Class extends value undefined is not a constructor or null" this doesn't happen if a I add the decorator separately in every entity.

I'm doing something wrong or the library doesn't support the heritage of the PolymorphicChildren decorator?

Example:

This works:

export class Organization extends CustomBaseEntity {
  @Column({ unique: true })
  name!: string;
}
@Entity({ name: 'companies' })
export class Company extends Organization {
  @PolymorphicChildren(() => UserOrganizationRole, {
    eager: false,
  })
  users!: UserOrganizationRole[];
}
@Entity({ name: 'clients' })
export class Client extends Organization {
  @PolymorphicChildren(() => UserOrganizationRole, {
    eager: false,
  })
  users!: UserOrganizationRole[];
}

This doesn't works:

export class Organization extends CustomBaseEntity {
  @Column({ unique: true })
  name!: string;

  @PolymorphicChildren(() => UserOrganizationRole, {
    eager: false,
  })
  users!: UserOrganizationRole[];
}
@Entity({ name: 'companies' })
export class Company extends Organization {}
@Entity({ name: 'clients' })
export class Client extends Organization {}
bashleigh commented 3 years ago

that should work? Perhaps I've messed something up by not checking abstracts? Or defining to the prototype or something?