Sequelize嵌套include实现两次左外连接时第二层无数据如何解决
问题原因
你代码的核心错误是嵌套关联配置的字段拼写错误:你在session的include配置里把include错写为indlude,该拼写错误会导致Sequelize直接忽略第二层关联配置,因此不会查询session_extra_data表的数据。
修复方案
1. 修正查询代码的拼写错误
将查询部分的拼写错误修正即可,如果你需要第二层关联也走左外连接,也可以显式添加required: false配置:
call.findAll({ limit: 5, include: [{ model: session, as: "sessions", // 修正拼写错误:indlude → include include:[{ model: session_extra_data, as: "sessionExtraData", required: false }], required: false }], }).then(data => { console.log("DATA", JSON.stringify(data)); })
2. 可选的关联配置优化(非必改,避免后续其他关联查询报错)
你当前的call.hasMany关联没有显式指定外键,和反向的belongsTo配置不匹配,建议补充外键配置:
call.hasMany(session,{ as: "sessions", foreignKey: "call_id" })
内容的提问来源于stack exchange,提问作者Tayyab
相关产品推荐
相关产品推荐

