Búsqueda de sitios web

typescript - TypeORM: Nombres de columna personalizados en una relación muchos-a-muchos


Dadas las siguientes dos entidades TypeORM que tienen una relación @ManyToMany:

@Entity({ name: 'products' })
export class ProductEntity {
  @PrimaryColumn()
  id: number;

  @Column()
  name: string;

  @ManyToMany(type => CategoryEntity, { eager: true })
  @JoinTable({ name: 'products_categories' })
  categories: CategoryEntity[];
}
@Entity({ name: 'categories' })
export class CategoryEntity {
  @PrimaryColumn({ length: 40 })
  code: string;
}

Como resultado, se creó una tabla llamada "products_categories" con los siguientes nombres de columnas:

  • idProductos
  • categoriesCode

¿Hay alguna manera de darle a estas dos columnas nombres personalizados? Me gustaría renombrarlas de la siguiente manera:

  • productsId -> productId
  • categoriesCode -> categoryCode

Respuesta #1

Lo resolví ampliando el objeto de opciones dado a @JoinTable, que me había pasado por alto en la documentación de TypeORM:

@ManyToMany(type => CategoryEntity, { eager: true })
@JoinTable({
    name: "products_categories",
    joinColumn: {
        name: "product",
        referencedColumnName: "id"
    },
    inverseJoinColumn: {
        name: "category",
        referencedColumnName: "id"
    }
})
categories: CategoryEntity[];

Artículos relacionados