Sequelize-创建表
首先需要创建一个 Node 项目
npm init -y
然后安装 Sequelize
npm install sequelize
导入 Sequelize
const Sequelize = require(‘sequelize’);
配置连接信息:
第一个参数:要操作的数据库名称
第二个参数:数据库用户名
第三个参数:数据库密码
第四个参数:其它的配置信息
const sequelize = new Sequelize('bntang', 'root', 'root', { // MySQL服务器地址 host: '127.0.0.1', // MySQL服务器端口号 port: 3306, // 注意点: Sequelize不仅仅能操作MySQL还能够操作其它类型的数据库 // 告诉Sequelize当前要操作的数据库类型 dialect: 'mysql', // 连接池 pool: { // 最多有多少个连接 max: 5, // 最少有多少个连接 min: 0, // 当前连接多久没有操作就断开 idle: 10000, // 多久没有获取到连接就断开 acquire: 30000, } });
字段说明常用属性
字段名称 作用
type 字段类型
primaryKey 是否是主键
autoIncrement 是否自动增长
allowNull 是否允许为空
unique 是否必须唯一
defaultValue 默认值
额外配置常用属性
字段名称 作用
timestamps 是否自动添加 createdAt / updateAt 字段
freezeTableName 是否禁止自动将表名修改为复用
tableName 是否自定义表名
indexes 指定索引
例如如下的方式创建索引:
// 指定索引 indexes: [ { // 索引名称 name: '', // 索引字段名称 fields: [''], } ]
使用 sequelize 的 define 方法即可创建
下面先对参数进行说明:
第一个参数:用于指定 表的名称
第二个参数:用于指定 表中有哪些字段
第三个参数:用于配置 表的一些额外信息
🐤注意点:
Sequelize 在根据模型创建表的时候, 会自动将我们指定的表的名称变成复数
Sequelize 在根据模型创建表的时候, 会自动增加两个字段 createAt / updateAt
let User = sequelize.define('user', { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, name: { // varchar(255) type: Sequelize.STRING, allowNull: false, unique: true }, age: { type: Sequelize.TINYINT, defaultValue: 66 }, gender: { type: Sequelize.ENUM(['男', '女', '妖']), defaultValue: '妖' } }, {// 告诉 sequelize 不需要自动将表名变成复数 freezeTableName: true, // 自定义表名 // tableName: 'student', // 不需要自动创建 createAt / updateAt 这两个字段 timestamps: false, // 指定索引 indexes: [ { // 索引名称 name: 'idx_age', // 索引字段名称 fields: ['age'], } ] });
注意点
默认定义好一个模型之后并不会自动创建对应的表
我们需要通过调用连接对象的 sync 方法来执行同步
只有同步之后才会自动根据模型创建对应的表
sequelize.sync();