Javascript TypeForm queryBuilder中的可选参数

Javascript TypeForm queryBuilder中的可选参数,javascript,sql,typescript,nestjs,typeorm,Javascript,Sql,Typescript,Nestjs,Typeorm,是否可以在createQueryBuilder中使用可选参数 例如,我有以下代码: let users=wait this.conn .getRepository(用户实体) .createQueryBuilder(“用户”) .where(“user.firstName LIKE:search”,{search:dto.search}) .getMany(); 我的可选参数是search,我想启动子句。where仅当dto.search不为空时,但当他为空时,应该跳过此函数(where)并转

是否可以在
createQueryBuilder
中使用可选参数

例如,我有以下代码:

let users=wait this.conn
.getRepository(用户实体)
.createQueryBuilder(“用户”)
.where(“user.firstName LIKE:search”,{search:dto.search})
.getMany();
我的可选参数是
search
,我想启动子句
。where
仅当
dto.search
不为空时,但当他为空时,应该跳过此函数(
where
)并转到
getMany

有人知道怎么做吗?

试试这个:

let users = await this.conn.getRepository(UserEntity)
.createQueryBuilder('user')
.where(search !== null ? 
    'user.firstName LIKE :search': 'TRUE', {search: dto.search})
.getMany();
或者另一种没有“Where TRUE”的方法 这是:

let users = this.conn.getRepository(UserEntity)
.createQueryBuilder('user');
users = search !== null ? users.where('user.firstName LIKE :search',{search: dto.search}) : users
users = await users.getMany();
试试这个:

let users = await this.conn.getRepository(UserEntity)
.createQueryBuilder('user')
.where(search !== null ? 
    'user.firstName LIKE :search': 'TRUE', {search: dto.search})
.getMany();
或者另一种没有“Where TRUE”的方法 这是:

let users = this.conn.getRepository(UserEntity)
.createQueryBuilder('user');
users = search !== null ? users.where('user.firstName LIKE :search',{search: dto.search}) : users
users = await users.getMany();
一定要注意那些会使if语句出错的错误值


一定要注意那些会使if语句出错的错误值。

请注意本节
search!==空
。它不会考虑dto.search未定义或字符串值为零的情况。这可能会导致查询结果不准确。请小心此部分
search!==空
。它不会考虑dto.search未定义或字符串值为零的情况。这可能会导致查询结果不准确。