TypeORM queryBuilder 中的可选参数

4 javascript sql typescript typeorm nestjs

是否可以使用可选参数createQueryBuilder

例如,我有这样的代码:

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

我的可选参数是,我只想在 is 不为 null 时search启动子句,但是当他为 null 时,应该跳过此 function( ) 并转到..wheredto.searchwheregetMany

有人知道如何做到这一点吗?

小智 6

尝试这个:

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

或者另一种没有的方法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();
Run Code Online (Sandbox Code Playgroud)


Spl*_*tty 5

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();
Run Code Online (Sandbox Code Playgroud)

请务必注意可能导致 if 语句出错的虚假值。