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

Sequelize(v6)如何直接获取模型定义的列名?

在Sequelize v6中获取模型列名的方法

当然可以,Sequelize模型本身提供了内置属性来获取定义的列名,完全不需要硬编码或者手动遍历模型的属性。

核心方法:利用模型的rawAttributes属性

每个Sequelize模型都自带rawAttributes属性,它是一个对象,键就是你在sequelize.define里定义的列名,值则包含该列的所有配置细节。你可以通过遍历这个对象的键来获取所有列名,再过滤掉不需要的列。

示例代码(以Categories模型为例)

// 假设Categories是已定义好的Sequelize模型
const excludedColumns = ['created_at']; // 需要排除的列

// 获取所有列名并过滤指定列
const columnNames = Object.keys(Categories.rawAttributes).filter(column => {
  return !excludedColumns.includes(column);
});

console.log(columnNames); // 输出除created_at外的所有列名

可选方式:从数据库表结构中获取

如果你只需要数据库中实际存在的物理列(比如要排除虚拟字段),可以使用model.describe()方法,它会直接从数据库拉取表的结构信息:

async function getFilteredColumns(model) {
  const tableInfo = await model.describe();
  const excludedColumns = ['created_at'];
  return Object.keys(tableInfo).filter(col => !excludedColumns.includes(col));
}

// 使用方式
getFilteredColumns(Categories).then(columns => console.log(columns));

注意:rawAttributes包含模型定义的所有字段(包括虚拟字段),而describe()仅返回数据库中实际存在的列,可根据需求选择合适的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:54:50