如何动态添加 where 子句来查询使用 nestjs Query Builder 生成的查询? [英] How to add a where clause dynamically to query which is generated using nestjs Query Builder?
本文介绍了如何动态添加 where 子句来查询使用 nestjs Query Builder 生成的查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在开发一个 API,它的 UI 要求基于搜索字段的值,我将收到过滤后的结果.UI 上有很多搜索字段.
I am working on an API for which the requirement from UI is based on the value of the search field I shall receive the filtered results. There are many search fields on UI.
示例代码 -
async getRoomsByMember(active: boolean, email: string): Promise<any[]> {
return await getRepository(Room)
.createQueryBuilder('room')
.innerJoinAndSelect('room.member', 'member')
.where("room.active = :active", {active: active})
.andWhere("member.email = :email", { email: email })
.getMany();
}
如果用户在过滤字段(如成员电话号码、城市、州、国家/地区和邮政编码)中输入值,我将能够动态过滤房间成员.
I shall be able to filter room members dynamically if values entered by a user on filter fields like - member phone number, city, state, country, and zip.
推荐答案
你就快到了 :-)
你可以试试这样的:
async getRoomsByMember(active: boolean, email: string): Promise<any[]> {
const query = getRepository(Room)
.createQueryBuilder('room')
.innerJoinAndSelect('room.member', 'member')
.where("room.active = :active", {active: active});
// Keep adding your other fields like member phone number, city, state, country, and zip, like below
if(email) {
query.andWhere("member.email = :email", { email: email })
}
return query.getMany();
}
这篇关于如何动态添加 where 子句来查询使用 nestjs Query Builder 生成的查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文