是否可以在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
。
有人知道怎么做吗?
答案 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语句跳闸的虚假值。