You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS TypeORM查询中如何正确编写带类型的OR条件?

TypeORM OR条件查询正确写法

你遇到的语法报错是因为TypeORM的对象数组OR查询要求每个数组项都是完整的字段名: 条件值键值对结构,同时空值判断需要使用TypeORM内置的IsNull运算符,如果你需要匹配多个VALCompany值,还需要搭配In运算符使用。

第一步:导入所需运算符

import { In, IsNull } from 'typeorm';

第二步:编写符合语法的where条件

rolesCanAssign = await this.rolesRepository.find({
  where: [
    { VALCompany: In(user.VALCompany) },
    { VALCompany: IsNull() }
  ]
})

说明

  • 数组内的每个对象对应OR连接的一个条件分支,底层会自动生成WHERE VALCompany IN (?) OR VALCompany IS NULL的SQL语句,和你手动拼接字符串的逻辑完全一致
  • 这种写法比手动拼接SQL更安全,可以避免SQL注入风险,同时支持TS类型校验
  • 你之前报错是因为{isNull(VALCompany)}不符合键值对结构要求,没有指定要判断的字段名,TypeORM无法解析
  • 如果user.VALCompany是单个值而非数组,可以去掉In包装,直接写{ VALCompany: user.VALCompany }即可

内容的提问来源于stack exchange,提问作者laur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:24:03