首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeORM,需要添加"WHERE IN (.)“在查询条件下&只有当有一个值时

TypeORM,需要添加"WHERE IN (.)“在查询条件下&只有当有一个值时
EN

Stack Overflow用户
提问于 2021-11-22 14:15:02
回答 1查看 3.9K关注 0票数 0

我在用TypeORM编写的node.js项目中使用TypeScript (0.2.40版)。我知道我可以从数据库中找到一条记录:

代码语言:javascript
复制
userRepository.find({ where: { firstName: "John", company: "foo" } });

它执行查询:

代码语言:javascript
复制
SELECT * FROM "user"
WHERE "firstName" = 'John' AND "company" = 'foo'

现在,我在类型记录中有了一个数组,它可能保存整数值,也可能不保存整数值:

代码语言:javascript
复制
 const userIds = params.user_ids; // e.g. undefined or [1,2,3]

如果WHERE userIds IN (1,2,3)包含这样的值,我希望查询添加userIds,否则不要添加这个where条件。

我尝试过(在本例中,params可能包含company,也可能不包含):

代码语言:javascript
复制
const {params} = parseRequest();

query: SelectQueryBuilder<MyEntity> = ...;

query.where({
  firstName: 'John',
  ...(params.company && { company: params.company }), // add 'company' condition only if value exists
}).andWhere({/* how to do here have 'WHERE IN (1,2,3)' if value exist?*/});

我有两个问题:

  1. 如何只添加"WHERE IN (.)“只有当params.user_ids存在时(与params.company相同)?(如果有一种简洁的方法,请随时删除我的andWhere用法)
  2. TypeORM添加"WHERE IN (.)“的语法是什么?是否存在params.user_ids假设值的逻辑?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-22 14:21:03

您可以与IN运算符一起使用一个简单的条件。例如。

代码语言:javascript
复制
import {In} from "typeorm";

let query = ...
if (userIds?.length) {
  // WHERE IN [...userIds]
  query = query.where({userId: In([...userIds])})
}
// Continue chaining.
query = ...

资源:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70067206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档