Soy nuevo en typeorm y cuando quiero recuperar una tabla que tiene una relación, las columnas de esa relación se recuperan en un objeto con el nombre de esa tabla. Aquí hay un ejemplo
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm" import { Photo } from "./Photo" @Entity() export class User { @PrimaryGeneratedColumn() id: number @Column() name: string @OneToMany((type) => Photo, (photo) => photo.user) photos: Photo[] } import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from "typeorm" import { User } from "./User" @Entity() export class Photo { @PrimaryGeneratedColumn() id: number @Column() url: string @ManyToOne((type) => User, (user) => user.photos) user: User } const user = await createQueryBuilder("user") .leftJoinAndSelect("user.photos", "photo") .where("user.name = :name", { name: "Timber" }) .getOne()Resultado
{ id: 1, name: "Timber", photos: [{ id: 1, url: "me-with-chakram.jpg" }, { id: 2, url: "me-with-trees.jpg" }] }Quiero que los campos de la relación estén al mismo nivel que los campos de mi tabla
Resultado Esperado
{ { id: 1, name: "Timber", id: 1, url: "me-with-chakram.jpg" } { id: 1, name: "Timber", id: 2, url: "me-with-trees.jpg" } }¿Hay una opción para hacer esto? No encontré nada en sus documentos.
Puedes probar esto,
const user = await createQueryBuilder("user") .leftJoinAndSelect("user.photos", "photo") .select([ 'user.id', 'user.name', 'photos.id', 'photos.url' ]) .where("user.name = :name", { name: "Timber" }) .getOne();Intenté usar '*' y funcionó
const user = await createQueryBuilder("user") .leftJoinAndSelect("user.photos", "photo") .select('*') .where("user.name = :name", { name: "Timber" }) .getOne();