如何动态添加where子句来查询使用nestjs查询生成器生成的查询?

Soh*_*war 4 query-builder node.js typeorm nestjs

我正在开发一个 API,UI 的要求基于我将收到过滤结果的搜索字段的值。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();
  }
Run Code Online (Sandbox Code Playgroud)

如果用户在过滤字段(例如成员电话号码、城市、州、国家和邮政编码)中输入值,我将能够动态过滤房间成员。

Era*_*han 6

你快到了 :-)

你可以尝试这样的事情:

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