在TypeORM QueryBuilder中使用通配符的LIKE查询

时间:2018-08-30 15:35:55

标签: nestjs typeorm

在我的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查询的信息。

How to perform a like query Typeorm提供了一个解决方案: .where("user.firstName like :name", {name: '%' + firstName + '%' })

但是我无法使用skiptake代替where()时可用的find()和{{1}}。

关于我如何使用TypeORM QueryBuilder实现此目标的任何想法?

1 个答案:

答案 0 :(得分:2)

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();

有关详细信息,请参阅文档: Using Pagination in TypeORM QueryBuilder