Как запрос с подстановочным знаком в TypeORM QueryBuilder - PullRequest
0 голосов
/ 30 августа 2018

В моем проекте NestJS у меня есть запрос TypeORM:

const users = await this.usersRepository.find({
  skip,
  take,
  order: sortingObject,
  join: {
      alias: 'user',
      leftJoinAndSelect: {
          country: 'user.country_id',
      },
  },
});

Теперь я хочу вернуть пользователей только с John в названии. В SQL это будет LIKE запрос LIKE %John%.

В https://github.com/typeorm/typeorm/blob/master/docs/find-options.md нет информации о подстановочных знаках LIKE запросов.

Как выполнить подобный запрос Typeorm дает в качестве решения: .where("user.firstName like :name", {name: '%' + firstName + '%' })

Но тогда я не могу использовать skip и take, которые доступны при использовании where() вместо find().

Есть мысли о том, как мне этого добиться с помощью TypeORM QueryBuilder?

1 Ответ

0 голосов
/ 31 августа 2018

В QueryBuilder есть методы разбиения на страницы (.skip(int) и .take(int)).

Попробуйте что-то вроде этого.

const users = await this.usersRepository
    .createQueryBuilder("user")
    .leftJoinAndSelect("user.country_id", "country")
    .skip(5)
    .take(10)
    .where("user.firstName like :name", {name: '%' + firstName + '%' })
    .orderBy("user.id", "DESC")
    .getMany();

Подробности см. В документе: Использование разбиения на страницы в TypeORM QueryBuilder

...