如何在Sequelize中获取关联查询结果并在Thunk中正确访问Perfume.name字段
解决方案
方案1:直接读取现有扁平结构的字段
因为返回结果里的关联字段是带点的字符串键,JS 中带特殊字符的键不能用点语法访问,改用方括号语法即可:
// Thunk 中直接取值即可 const perfumeName = item['Perfume.name']
方案2:修改Sequelize查询配置,返回嵌套结构(推荐)
出现扁平字段的根本原因是你开启了raw: true查询配置,或者没有开启嵌套返回开关,调整查询参数即可让结果自动生成嵌套对象:
// 原查询写法(会返回扁平字段) const result = await 你的主模型.findAll({ include: [Perfume], raw: true // 这行是导致字段打平的核心原因 }) // 修改后的查询写法 const result = await 你的主模型.findAll({ include: [Perfume], raw: false, // 关闭raw查询 nest: true // 开启嵌套结构返回 })
修改后你就可以直接用item.Perfume.name的方式正常访问关联字段,不管是在Thunk中处理数据还是后续传给组件使用都更方便。
补充说明
如果你无法修改后端的Sequelize查询逻辑,只能拿到扁平结构的返回结果,也可以写个简单的转换函数批量把所有带点的扁平键转成嵌套对象,之后统一用嵌套语法访问即可。
内容的提问来源于stack exchange,提问作者Corleone v
相关产品推荐
相关产品推荐

