Sequelize如何在数据表创建后获取对应模型的实际数据库字段
解决方法
Model.rawAttributes只会读取代码中sequelize.define定义的字段配置,不会同步数据库侧的实际变更(比如手动新增的字段、迁移脚本更新但未同步到模型定义的字段),要获取真实的数据库表字段,直接调用Sequelize实例内置的describeTable方法即可,该方法会直接发起数据库查询拉取对应表的真实结构:
// 方式1:直接传入表名查询 const tableFields = await sequelize.getQueryInterface().describeTable('你的表名'); // 方式2:通过模型实例自动取对应表名查询 const tableFields = await sequelize.getQueryInterface().describeTable(你的模型类.tableName);
- 返回结果为对象格式,键是字段名称,值包含字段类型、是否允许为空、是否主键、默认值等完整属性
- 调用前需要确保Sequelize已完成数据库连接、对应数据表已创建完成
- 多Schema场景下可以给
describeTable传第二个参数指定Schema名称 - 可以通过
Object.keys(tableFields)直接提取所有字段名组成的数组
内容的提问来源于stack exchange,提问作者Norseback
相关产品推荐
相关产品推荐

