使用Sequelize+TypeScript操作MySQL,如何实现表ID自动递增?
如何用Sequelize实现表ID自动创建与递增
当然可以,Sequelize原生就支持主键自动递增,你只需要修改模型中id字段的配置即可,完全不需要第三方包。
修改后的模型代码
import { DataTypes, Model } from "sequelize"; import db from "../config/database.congfi"; interface TodoAttributes { // 设为可选,因为创建数据时不需要手动传入 id?: number; title: string; completed: boolean; } export class TodoInstance extends Model<TodoAttributes> {} TodoInstance.init( { id: { type: DataTypes.INTEGER, primaryKey: true, allowNull: false, // 添加这一行,开启自动递增 autoIncrement: true, }, title: { type: DataTypes.STRING, allowNull: false, }, completed: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false, }, }, { sequelize: db, tableName: "todo", } );
关键改动说明
- 在
id字段的配置中添加autoIncrement: true:这个配置会让Sequelize告知数据库将该字段设为自增主键,每次插入新数据时,数据库会自动生成并递增ID值。 - 将
TodoAttributes接口中的id设为可选(id?: number):因为创建数据时不需要手动传入ID,TypeScript会允许你省略这个字段,避免类型报错。
修改后,你插入数据时只需要传入title和completed(或只传title,因为completed有默认值),比如:
await TodoInstance.create({ title: "学习TypeScript" });
数据库会自动为这条数据分配一个递增的ID。
内容的提问来源于stack exchange,提问作者kingsJayson
相关产品推荐
相关产品推荐

