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

如何在Sequelize关联查询后修改属性名称?

解决Sequelize关联查询后role字段扁平化的问题

方法一:通过查询配置直接返回平级字段

利用Sequelize的attributes配置关联字段别名,配合raw: true直接生成期望的结构:

const { sequelize } = require('./path-to-sequelize-instance');

const user = await User.findAll({
  attributes: [
    'id',
    'username',
    'password',
    // 将Role表的name字段别名成role
    [sequelize.col('Role.name'), 'role']
  ],
  include: [
    {
      model: Role,
      attributes: [], // 不返回嵌套的Role对象
      required: true
    }
  ],
  raw: true,
  plain: true
});

此方式会让查询结果直接把role字段设为对应的name值,无需后续额外处理。

方法二:查询后手动转换结构

如果不想修改原有查询逻辑,可以在获取结果后手动解构重组数据:

const user = await User.findAll({
  include: [
    {
      model: Role,
      attributes: ["name"],
      required: true
    }
  ],
  plain: true
});

// 转换结构
const { role, ...userData } = user.toJSON(); // plain: true时也可直接使用user,无需toJSON
const transformedUser = {
  ...userData,
  role: role.name
};

这种方法适合需要保留原有查询逻辑,仅对结果做结构调整的场景。


内容的提问来源于stack exchange,提问作者any-1507

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:57:20