Sequelize关联Include模型查询GraphQL多层关联数据时Off字段为Null问题
问题原因
你在查询Company时,仅指定了关联Product,但未在Product的关联配置中嵌套加载Off数据。Sequelize不会自动递归加载所有层级的关联模型,必须显式声明每一层需要包含的关联对象。
解决方案
修改getCompany resolver中的findAll查询逻辑,在Product的include选项里嵌套添加Off模型的关联配置,保持as与模型定义的别名一致(即offs):
getCompany: async () => { const companies = await Company.findAll({ include: [{ model: Product, as: 'products', // 嵌套包含Product关联的Off数据 include: [{ model: Off, as: 'offs' }] }] }); return companies; },
修改后,Sequelize会在查询Company的同时,关联查询对应的Product,再嵌套查询每个Product关联的Off数据,GraphQL就能正确返回offs字段的内容。
另外可确认外键一致性:你定义的Product与Off的外键为ProductID(大写D),确保数据库表中的外键字段名和模型关联配置完全一致(你单独查询Product时能正常获取offs,说明这部分无问题,但统一大小写可避免潜在报错)。
内容的提问来源于stack exchange,提问作者Carlos Ivan
相关产品推荐
相关产品推荐

