1 | npm i sequelize |
驱动安装(选择以下其一)
1
2
3
4
5 npm install --save pg pg-hstore # Postgres
npm install --save mysql2
npm install --save mariadb
npm install --save sqlite3
npm install --save tedious # Microsoft SQL Server
导入sequelize包
创建sequelize实例(通过实例构造方法传入参数创建连接数据库地址)
.authenticate()
函数测试连接是否正常
1 | const Sequelize = require('sequelize'); |
构造函数参数详解
https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-constructor-constructor
默认情况下,在保持连接打开的状态,并对所有的查询使用相同的连接
1 | sequelize.close() |
模型的本质其实是代表的是数据库中表的抽象,包含数据库表的名称
以及该名称下所具有的列
(以及列的数据类型)
1 | sequelize.define(modelName, attributes, options) |
函数详解
https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-method-define
https://sequelize.org/master/class/lib/model.js~Model.html#static-method-init
eg:定义一个user模型
1 | const {Sequelize,DataTypes} = require('sequelize'); |
1 | const { |
sequelize.define
和model.init
是等效的
1 | const User = sequelize.define('User', { |
1 | const User = sequelize.define('User', { |
数据库结构生成器包含构建表时可以指定的各种字段类型:
数据类型 | 方法名称 | 描述 |
---|---|---|
字符串 | DataTypes.STRING | VARCHAR(255) |
DataTypes.STRING(100) | VARCHAR(100) | |
DataTypes.STRING.BINARY | VARCHAR BINARY | |
DataTypes.TEXT | TEXT | |
DataTypes.TEXT(‘tiny’) | TINYTEXT | |
DataTypes.CITEXT | CITEXT 仅 PostgreSQL 和 SQLite. | |
布尔 | DataTypes.BOOLEAN | TINYINT(1) |
数字 | DataTypes.INTEGER | INTEGER |
DataTypes.BIGINT | BIGINT | |
DataTypes.BIGINT(11) | BIGINT(11) | |
DataTypes.FLOAT | FLOAT | |
DataTypes.FLOAT(11) | FLOAT(11) | |
DataTypes.FLOAT(11, 10) | FLOAT(11,10) | |
DataTypes.REAL | REAL 仅 PostgreSQL | |
DataTypes.REAL(11) | REAL(11) 仅 PostgreSQL. | |
DataTypes.REAL(11, 12) | REAL(11,12) 仅 PostgreSQL. | |
DataTypes.DOUBLE | DOUBLE | |
DataTypes.DOUBLE(11) | DOUBLE(11) | |
DataTypes.DOUBLE(11, 10) | DOUBLE(11,10) | |
DataTypes.DECIMAL | DECIMAL | |
DataTypes.DECIMAL(10, 2) | DECIMAL(10,2) | |
DataTypes.INTEGER.UNSIGNED | MySQL 和 MariaDB 设置为无符号或零填充 | |
DataTypes.INTEGER.ZEROFILL | MySQL 和 MariaDB设置为无符号或零填充 | |
DataTypes.INTEGER.UNSIGNED.ZEROFILL | MySQL 和 MariaDB设置为无符号或零填充 | |
日期 | DataTypes.DATE | DATETIME 适用于 mysql / sqlite, |
DataTypes.DATE(6) | DATETIME(6) 适用于 mysql 5.6.4+ | |
DataTypes.DATEONLY | 不带时间的 DATE | |
UUID | DataTypes.UUID |
对于 PostgreSQL 和 SQLite,它会是 UUID
数据类型,对于mysql会变成char(36)
,UUID默认值设置
1 | { |
表名复数
自定义表名
在默认情况下,关联到数据库的表名为Users
增加配置 去掉复数的方式
方式一:全局配置,在实例化的时候增加freezeTableName配置
1 | const sequelize = new Sequelize('sequelize', 'root', '123456', { |
方式二:单独模型配置
1 | // define 方式定义模型 |
1 | const User = sequelize.define('User', { |
1 | // define 方式定义模型 |
1 | // //用户模型同步到数据库中 |
1 | // 删除指定用户表 |