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: [''],
    }
]
  • 使用 sequelizedefine 方法即可创建
  • 下面先对参数进行说明:
  • 第一个参数:用于指定 表的名称
  • 第二个参数:用于指定 表中有哪些字段
  • 第三个参数:用于配置 表的一些额外信息
  • 🐤注意点:
    • 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();
posted @ 2020-10-01 15:56  BNTang  阅读(2457)  评论(2编辑  收藏  举报