在我的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 + '%' })
但是我无法使用skip
和take
代替where()
时可用的find()
和{{1}}。
关于我如何使用TypeORM QueryBuilder实现此目标的任何想法?
答案 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