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
相关产品推荐
相关产品推荐

