Typeorm Like query



typeorm的类似查询不起作用。这是我尝试在电子邮件中按关键字搜索的代码

async findAll(findAllQuery: FindAllQuery): Promise<any> {
const [users, total] = await this.usersRepository.findAndCount(
{
where: {
email: Like(`%${findAllQuery.keyword}%`),
},
skip: findAllQuery.page - 1,
take: findAllQuery.itemsPerPage,
},
);
return { users, total };
}

有什么办法做这件事吗?

我终于避免了Like,似乎我误解了Like的含义,我只想通过关键字在用户中搜索,所以我做了这样的事情,它成功了。

async findAll(findAllQuery: FindAllQuery): Promise<any> {
const options: FindManyOptions<User> = {};
if(findAllQuery.keyword){
options.where = {
$or:[
{email: RegExp(`^${findAllQuery.keyword}`,'i')},
{firstName: RegExp(`^${findAllQuery.keyword}`,'i')},
{lastName: RegExp(`^${findAllQuery.keyword}`,'i')},
{username: RegExp(`^${findAllQuery.keyword}`,'i')},
],
}
}
if(findAllQuery.page){
options.skip = findAllQuery.page - 1;
}
if(findAllQuery.itemsPerPage){
options.take = findAllQuery.itemsPerPage;
}
const [users, total] = await this.usersRepository.findAndCount(options);
return { users, total };
}

最新更新