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

为什么Sequelize中model.dataValues返回的数据与定义的模型不一致?

问题原因排查列表
    1. 数据库表实际字段名不匹配
      优先确认你的数据库中supplier_catalog表的真实字段名,很大概率是你写迁移脚本时字段名就写错为minimum_reseller_mark,即使重新执行迁移也不会修正,因为迁移脚本本身的字段定义是错的。你可以直接在数据库执行表结构查询语句确认:
    DESC supplier_catalog;
    
    如果确认表字段名是短的那个,你需要新写一个修改字段名的迁移脚本修正,或者删表后重新跑正确的迁移。
    1. Sequelize 字段映射配置问题
      如果你数据库里字段名确实是minimum_reseller_markup,那就是Sequelize的字段映射规则导致的转换错误:
    • 检查你初始化Sequelize实例时的全局define配置,是否开启了自定义字段名转换规则、或者开启了错误的自动缩写/截断配置,部分旧版本Sequelize的非标准配置会对超长字段名做自动截断处理
    • 你可以在模型字段定义中显式指定field属性强制绑定字段名,避免自动转换出问题,修改后的模型定义如下:
      minimum_reseller_markup: {
        type: DataTypes.INTEGER,
        defaultValue: 0,
        field: 'minimum_reseller_markup' // 显式指定数据库对应的字段名
      },
      
    1. 查询语句配置了错误的别名
      检查你执行查询的代码,是否在attributes参数中手动写了别名配置,类似下面的写法会把字段重命名为短的版本:
    SupplierCatalog.findAll({
      attributes: ['id', 'supplier_id', ['minimum_reseller_markup', 'minimum_reseller_mark']] // 这里手动写了别名导致返回字段名变化
    })
    
    1. 模型被其他逻辑覆写
      检查项目中是否有其他地方对SupplierCatalog模型的属性做了修改,比如全局的模型扩展逻辑、mixin注入、或者第三方插件修改了模型的字段定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:09:01