#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?