#Eager oneToMany relation but select only one field.

5 messages · Page 1 of 1 (latest)

buoyant tundra
#

Hello. I have two entities:

@Entity()
export class User {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    nick: string;

    @OneToMany(() => Image, {
        eager: true
    })
    images: Image[];
}
@Entity()
export class Image{
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    active: boolean;

    @ManyToOne(() => User)
    @JoinColumn()
    user: User;
}

When I make a request, I get all Image entities:

user: {
  id: 1,
  nick: 'somenick',
  images: [
    {
       id: 1,
       active: false,
    },
    {
       id: 2,
       active: true,
    },
    {
       id: 3,
       active: false,
    }
  ]
}

But I need to get only the active image. Ideally like this:

user: {
  id: 1,
  nick: 'somenick',
  image: {
     id: 2,
     active: true,
  },
}

Is there some way to do this?

normal plume
#

for example

#
const users = User.find({ where: { id: 1, images: { active: true })
console.log(users)
buoyant tundra