基本配置
sequelize安装
yarn add sequelize
yarn add sequelize-cli
yarn add mysql2
查看有哪些命令
.\node_modules\.bin\sequelize
初始化
.\node_modules\.bin\sequelize init
# 生成对应的文件夹
# config 配置文件夹
# migrations 迁移文件夹
# models 模型文件夹
# seeders 种子文件夹
配置数据库
// config -> config.json
// 三种开发环境的, 只是取一种, 开发环境
"development": {
"username": "root",
"password": "root",
"database": "sequelize_db",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false // 删除这一行, 上一行的逗号也去掉
},
基本使用
创建数据库
# 设置数据库默认编码为utf8
.\node_modules\.bin\sequelize db:create --charset 'utf8'
创建模型和迁移文件
# create 和 generate 都可以
# 如果表的字段很多的话, 那么命令行就写一两个, 后面可以在文件里面更改
.\node_modules\.bin\sequelize model:create --name User --attributes username:string,password:string
数据类型
// 迁移文件
Sequelize.STRING // varchar(255)
Sequelize.STRING(50)
Sequelize.INTEGER
Sequelize.TEXT
Sequelize.BIGINT
Sequelize.BIGINT(11)
Sequelize.FLOAT // FLOAT
Sequelize.FLOAT(11) // FLOAT(11)
Sequelize.FLOAT(11, 10) // FLOAT(11,10)
Sequelize.DOUBLE // DOUBLE
Sequelize.DOUBLE(11) // DOUBLE(11)
Sequelize.DOUBLE(11, 10) // DOUBLE(11,10)
Sequelize.DECIMAL // DECIMAL
Sequelize.DECIMAL(10, 2) // DECIMAL(10,2)
Sequelize.DATE // DATETIME for mysql / sqlite, TIMESTAMP WITH TIME ZONE for postgres
Sequelize.DATE(6) // DATETIME(6) for mysql 5.6.4+. Fractional seconds support with up to 6 digits of precision
Sequelize.DATEONLY // DATE without time.
Sequelize.BOOLEAN // TINYINT(1)
Sequelize.ENUM('value 1', 'value 2') // An ENUM with allowed values 'value 1' and 'value 2'
Sequelize.JSON // JSON column. PostgreSQL, SQLite and MySQL only.
迁移文件字段属性
// 迁移文件 设计数据表的
{
allowNull: false, // 是否允许为空
autoIncrement: true, // 字段是否是自增类型
primaryKey: true, // 字段是否是主键
type: Sequelize.INTEGER // 字段是整型
defaultValue: null, // 字段默认值
unique: true // 唯一索引
}
添加索引
// 迁移文件, 也可以在这里添加唯一索引
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('Users', {
}).then(()=>{
// ===================普通索引=======================================
return queryInterface.addIndex('users', ['email'])
// ===================普通索引=======================================
/* return queryInterface.addIndex('users', {
name: 'email-index',
fields: ['email']
}) */
// =======================唯一索引====================================
/* return queryInterface.addIndex('users', ['username'], {
unique: true
}) */
// ========================唯一索引====================================
/* return queryInterface.addIndex('users', {
name: 'username',
unique: true,
fields: ['username']
}); */
});
},