typeorm querybuilder中的可选参数

cnwbcb6i  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(585)

是否可以在中使用可选参数 createQueryBuilder ?
例如,我有以下代码:

let users = await this.conn
  .getRepository(UserEntity)
  .createQueryBuilder("user")
  .where("user.firstName LIKE :search", { search: dto.search })
  .getMany();

我的可选参数是 search ,我想启动条款 .where 只有当 dto.search 不为null,但当他为null时,则应跳过此函数( where )然后去 getMany .
有人知道怎么做吗?

c6ubokkw

c6ubokkw1#

试试这个:

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

fnatzsnv2#

const query = this.conn
  .getRepository(UserEntity)
  .createQueryBuilder("user");

// Optionally add where condition
if(dto.search){
  query.where("user.firstName LIKE :search", { search: dto.search })
}
// run query
let users = await query.getMany();

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

相关问题