基本配置
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']
}); */
});
},