TypeORM queryBuilder

时间:2020-07-03 12:27:24

标签: javascript sql typescript nestjs typeorm

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

例如,我有以下代码:

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

我的可选参数是search,我只想在.where不为null时启动子句dto.search,但是当他为null时应跳过此函数(where ),然后转到getMany

有人知道怎么做吗?

2 个答案:

答案 0 :(得分:0)

尝试:

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

或者用另一种方式来解决“何处为真” 是这个吗?

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

答案 1 :(得分:0)

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语句跳闸的虚假值。