如何将指定SQL建表语句转换为Sequelize实现?
将SQL建表语句转换为Sequelize实现
以下是对应你提供的SQL语句的Sequelize模型代码(适配Sequelize v6+版本):
const { Model, DataTypes } = require('sequelize'); const sequelize = require('./your-sequelize-instance'); // 替换为你的Sequelize实例路径 class FundraiserUpdate extends Model {} FundraiserUpdate.init({ updateId: { type: DataTypes.INTEGER, autoIncrement: true, // 对应SQL中的SERIAL自增类型 allowNull: false }, updateFundraiserId: { type: DataTypes.INTEGER, allowNull: false, references: { model: 'fundRaisers', // 关联的目标表名 key: 'fundraiserId' // 关联的目标字段 }, onUpdate: 'CASCADE', // 可选:外键更新时的级联行为 onDelete: 'CASCADE' // 可选:外键删除时的级联行为 }, updateTitle: { type: DataTypes.TEXT, allowNull: false }, updateDescription: { type: DataTypes.TEXT, allowNull: false } }, { sequelize, tableName: 'fundraiserUpdates', // 显式指定表名,与SQL定义一致 primaryKey: ['updateId', 'updateFundraiserId'], // 配置复合主键 timestamps: false // 关闭Sequelize默认生成的createdAt/updatedAt字段 }); module.exports = FundraiserUpdate;
核心对应说明:
- SERIAL类型映射:PostgreSQL的
SERIAL等价于Sequelize中INTEGER类型搭配autoIncrement: true配置。 - 复合主键:通过模型配置项的
primaryKey字段数组,实现SQL中的复合主键约束。 - 外键约束:在
updateFundraiserId字段的references属性中定义关联关系,可按需补充级联行为。 - 表名一致性:通过
tableName显式设置表名,避免Sequelize自动复数化模型名导致的表名不匹配。
内容的提问来源于stack exchange,提问作者MEet
相关产品推荐
相关产品推荐

