Выберите поля в реляционной сущности в typeorm

#typescript #typeorm

Вопрос:

Как выбрать возвращаемое значение или столбцы во вложенной связи?

Примеры сущностей:

 Product -> Price -> Marketplace
 

Когда я выполняю запрос в хранилище продуктов, я не могу выбрать, какие поля мне нужны в сущности Marketplace, которая связана с сущностью Цены, но не с сущностью продукта.

 @Entity('product')
export class Product extends BaseEntity {
  @PrimaryGeneratedColumn()
  product_id: number

  @Index()
  @Column()
  name: string

  @Index({ unique: true })
  @Column()
  sku: string

  @OneToMany(type => ProductPrice, productPrice => productPrice.product, { eager: true })
  prices: ProductPrice[]
}


@Entity('price')
export class ProductPrice extends BaseEntity {
  @PrimaryGeneratedColumn()
  @Exclude()
  price_id: number

  @ManyToOne(type => Marketplace, marketplace => marketplace.marketplace_id, { eager: true })
  @JoinColumn({ name: 'marketplace_id' })
  marketplace: Marketplace

  @ManyToOne(type => Product, product => product.product_id)
  @JoinColumn({ name: 'product_id' })
  product: Product

  @Column()
  price: number

  @Column()
  sale_price: number
}

@Entity('marketplace')
export class Marketplace extends BaseEntity {
  @PrimaryGeneratedColumn()
  marketplace_id: number

  @Column()
  name: string
}
 

С помощью:

 const query = await this.productRepository.findOne({
      where: { sku: sku },
    })
 

Выход будет:

 {
    "product_id": 123,
    "name": "Product name",
    "sku": "1234546",
    "prices": [
        {
            "price": 255,
            "sale_price": 223,
            "marketplace": {
                "marketplace_id": 1,
                "name": "Marketplace name",
                "code": "market1"
            }
        }
    ]
}
 

Рынок с нетерпением загружен. Но я хочу изменить вывод вложенных отношений, чтобы:

 "prices": [
            {
                "price": 255,
                "sale_price": 223,
                "marketplace_code": "market1"
            }
        ]
 

Is there a way to modify the marketplace JoinColumn to decide what to return in a nested relationship when I am querying the Product repository, not the ProductPrice?