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

Sequelize v6如何在操作符参数中引用模型自身属性

Sequelize v6 where子句引用模型自身属性的正确写法

你当前写法的问题在于,传入的{field3}是JS对象字面量,Sequelize会将其识别为固定参数值,不会解析为表字段引用,因此无法实现两个字段值的对比判断。

实现同表字段值对比,需要使用Sequelize内置的列引用方法col(),该方法会显式告诉ORM传入的内容是表字段,而非需要转义的固定值。

正确实现步骤

  • 从sequelize依赖中引入操作符Op和列引用方法col
  • 在[Op.ne]的参数位置传入col('要对比的字段名')

可直接运行的代码示例

// 引入需要的Sequelize内置方法
const { Op, col } = require('sequelize');

const resultArray = await myTable.findAll({
  attributes: [
    "field1",
    "field2",
    "field3"
  ],
  where: {
    field2: {
      [Op.ne]: col('field3')
    }
  }
})

补充:如果需要写更复杂的字段对比逻辑(比如字段拼接、运算后对比),可以替换col()为literal()方法直接传入原生SQL片段,写法为[Op.ne]: literal('field3'),常规字段对比场景优先使用col(),可自动适配字段名转义、表别名等场景,兼容性更好。

上述代码生成的SQL和预期逻辑完全一致:

SELECT field1, field2, field3 FROM myTable WHERE field2 != field3;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:39:14