• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

688
Vistas
TypeORM: Relación personalizada de muchos a muchos

Estoy trabajando con Nest.js, TypeORM y PostgreSQL, tengo dos entidades (producto y piedra) con una relación de muchos a muchos, según mi propio proyecto comercial, tengo que agregar una columna adicional a esa tabla de muchos a muchos (product_stone), pero tengo un problema con mi solución, al principio trato de crear un producto con un conjunto de piedras:

 "stones": [ {"id": 1,"count":1}, {"id": 2,"count": 3} ]

y después de eso, trato de agregar el conteo a la tabla product_stone actualizándola, el resultado será así: product_stone_table hasta aquí todo está bien, pero cada vez que reinicio el servidor, todos los datos en esa columna adicional serán establecido en su valor predeterminado (nulo): product_stone_table

Y también traté de no configurar el conteo en {nullable:true} en la tabla product_stone y agregar el conteo durante la creación de un producto, pero cuando quiero reiniciar el servidor recibo un error como este:

 QueryFailedError: column "count" of relation "product_stone" contains null values

¿Hay alguien que me oriente?

producto.entidad.ts

 @Entity() export class Product extends BaseEntity { @PrimaryGeneratedColumn() id: number; @ManyToMany(() => Stone) @JoinTable({ name: 'product_stone', joinColumn: { name: 'productId', referencedColumnName: 'id', }, inverseJoinColumn: { name: 'stoneId', referencedColumnName: 'id', }, }) stones: Stone[]; }

piedra.entity.ts

 @Entity() export class Stone extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() title: string; }

producto_piedra.entidad.ts

 @Entity('product_stone') export class ProductStone extends BaseEntity { @Column({ nullable: true }) count: number; @Column() @IsNotEmpty() @PrimaryColumn() productId: number; @Column() @IsNotEmpty() @PrimaryColumn() stoneId: number; }
about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No creo que pueda definir atributos personalizados en una tabla de muchos a muchos de esa manera.

De la documentación :

En caso de que necesite tener propiedades adicionales en su relación de muchos a muchos, debe crear una nueva entidad usted mismo

En su caso, eso significaría que tendría que hacer algo así:

 // product_stone.entity.ts @Entity() export class ProductToStone { @PrimaryGeneratedColumn() public id: number; @Column() public productId: number; @Column() public stoneId: number; @Column() public count: number; @ManyToOne(() => Product, product => product.productToStone) public product: Product; @ManyToOne(() => Stone, stone => stone.productToStone) public stone: Stone; }
 // product.entity.ts ... @OneToMany(() => ProductToStone, productToStone => postToCategory.product) public productToStone!: PostToCategory[];
 // stone.entity.ts ... @OneToMany(() => ProductToStone, postToCategory => postToCategory.stone) public postToCategories!: PostToCategory[];
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda