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

如何使用TypeORM执行指定的MySQL JSON字段精确匹配查询?

正确的TypeORM查询写法

你遇到的错误是因为直接在where里嵌套对象时,TypeORM会把modelType识别为表的列,而非JSON字段settings中的属性。要实现原MySQL查询的逻辑,可通过以下方式编写:

方法一:使用Raw函数编写原生SQL片段

直接复用原MySQL的JSON比较逻辑,通过TypeORM的Raw函数嵌入原生SQL:

import { Raw } from "typeorm";

// 执行查询
repository.find({
  where: {
    settings: Raw(alias => `${alias} = JSON_OBJECT('modelType', JSON_ARRAY('ACTION'))`)
  }
});

这个写法会生成和你目标SQL完全一致的查询语句,Raw函数中的alias参数会自动替换为settings列名,避免硬编码表或列名的问题。

补充说明

如果你的需求是匹配settings中modelType数组包含ACTION(而非完全等于整个JSON对象),可改用JSON_CONTAINS:

repository.find({
  where: {
    settings: Raw(alias => `JSON_CONTAINS(${alias}->>'$.modelType', '["ACTION"]')`)
  }
});

内容的提问来源于stack exchange,提问作者María Gregorio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:41:01