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

Sequelize一对多关联查询报SequelizeEagerLoadingError错误如何解决

错误原因
  1. 关联别名不匹配:你在User模型中定义User.hasMany(User_has_signature, {as: 'user_has_signature'})关联时指定了别名,但控制器预加载查询的include配置中没有声明对应as参数,Sequelize无法匹配到已定义的关联关系,直接抛出该错误。
  2. 配置冗余错误:你当前是User对User_has_signature的一对多关联,include中使用的through参数仅适用于多对多关联的中间表配置,属于多余配置,会引发额外逻辑异常。
  3. 字段拼写错误:查询条件中的字段名signature_ttype_signature_type_id多写了一个t,和模型中实际定义的signature_type_signature_type_id不一致。
修复方法

直接修改控制器中的查询代码即可:

const User = require("../../model/user/user")
const User_has_signature = require("../../model/user/user_has_signature")

async index(req, res){
        const user = await User.findAll({
            include: [{
              model: User_has_signature,
              // 新增和关联定义完全一致的as参数
              as: 'user_has_signature',
              // 修正字段名,移除多余的through、foreignKey配置
              where: {signature_type_signature_type_id: 3},
              // 可选配置:如果需要保留没有对应签名的用户数据,加上下面这行,会走左关联查询
              // required: false
            }]
          })
        res.status(200).json(user)
        return
    }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:15:02