todos Soy nuevo en TypeORM y necesito ayuda.
Intento crear relaciones de muchos a muchos con propiedades personalizadas como estos documentos aquí
Y aquí mis problemas.
Quiero un resultado de consulta como este ...
{ "id": 1, "username": "John Doe", "products": [ { "id": 1, "title": 'A shirt', "description": 'lorem ipsum' } ] }Pero tengo...
{ "id": 1, "username": "John Doe", "products": [ { "id": 1, "userId": 1, "productId":1 } ] }Aquí como consulto
const user = await this.userRepository.findOne({ where: { id }, relations: ["products"], });Aquí está mi código.
Entidad de producto de usuario
// user-product.entity.ts @Entity() export class UserProduct extends BaseEntity { @PrimaryColumn() public id: number; @Column() public userId!: number; @Column() public productId!: number; @ManyToOne( () => User, (user) => user.products ) public user!: User; @ManyToOne( () => Product, (product) => product.users ) public product!: Product; }Entidad de usuario
// user.entity.ts @Entity() export class User extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() username: string; @OneToMany(()=> UserProduct, userToProduct => userToProduct.user) public products!: UserProduct[]; }Producto Entidad
// product.entity.ts @Entity() export class Product extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() title: string; @Column({ nullable: true }) subtitle: string; @Column({ nullable: true }) description: string; @OneToMany( () => UserProduct, (userProduct) => userProduct.product ) public users!: UserProduct[]; }Me gustaría saber. ¿Cómo obtener un resultado como el anterior?
Creo que quieres saber cómo cargar las subrelaciones.
relaciones: las relaciones deben cargarse con la entidad principal. También se pueden cargar subrelaciones (abreviatura de join y leftJoinAndSelect)
Puede consultar este documento: Opciones de búsqueda
Puedes hacer esto:
const user = await this.userRepository.findOne({ where: { id }, relations: ["products.product"], });