繁体   English   中英

TypeORM queryBuilder 中的可选参数

[英]Optional parameter in TypeORM queryBuilder

是否可以在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

有人知道怎么做吗?

尝试这个:

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();
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 语句出错的虚假值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM