如何动态添加 where 子句来查询使用 nestjs Query Builder 生成的查询? [英] How to add a where clause dynamically to query which is generated using nestjs Query Builder?

查看:96
本文介绍了如何动态添加 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆