TypeORM, многие ко многим относятся Пользователь — животное, учитывая идентификатор пользователя, как запрашивать животных

#typescript #orm #typeorm

Вопрос:

Итак, у меня есть эти сущности

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

    @Column()
    email: string

    @Column()
    name: string

    @ManyToMany(x => Animal)
    @JoinTable()
    animals: Animal[]
}

@Entity()
class Animal {
    @PrimaryGeneratedColumn()
    id: number

    @Column()
    name: string
}
 

Я хочу выбрать всех животных по заданному идентификатору пользователя с помощью take и skip. У меня возникли трудности, так как на сущности нет обратной связи Animal.user .

Ответ №1:

вот пример использования querybuilder:

 const animals = await User.createQueryBuilder('user')
      .leftJoin('user.animals', 'animals')
      .where('user.id = :userId', {
        userId: userId,
      })
      .select(['animals'])
      .take(take)
      .skip(skip)
      .getMany();