开发环境,
node版本:8.x以上
0. 安装依赖
npm i sequelize mysql2
1. 建立数据库连接配置文件
// ./databse.config.js
module.exports = {
// 打开哪个数据库
database: 'test',
// 用户名
username: 'xxx',
// 密码
password: 'xxx',
// 使用哪个数据库程序
dialect: 'mysql',
operatorsAliases: false,
// 地址
host: 'localhost',
// 端口
port: 3306,
// 连接池
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
// 数据表相关的全局配置
define: {
// 是否冻结表名
// 默认情况下,表名会转换为复数形式
freezeTableName: true,
// 是否为表添加 createdAt 和 updatedAt 字段
// createdAt 记录表的创建时间
// updatedAt 记录字段更新时间
timestamps: true,
// 是否为表添加 deletedAt 字段
// 默认情况下, destroy() 方法会删除数据,
// 设置 paranoid 为 true 时,将会更新 deletedAt 字段,并不会真实删除数据。
paranoid: false
}
}
2. 建立连接文件
connect.js
const Sequelize = require('sequelize')
const config = require('./databse.config')
const sequelize = new Sequelize(config)
// 测试连接
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.')
})
.catch(err => {
console.error('Unable to connect to the database:', err)
})
执行node connect.js
感受下。
3. 建立模型文件
// ./models/User.js
module.exports = (sequelize, DataTypes) => {
// define() 方法接受三个参数
// 表名,表字段的定义和表的配置信息
return sequelize.define('user', {
id: {
// Sequelize 库由 DataTypes 对象为字段定义类型
type: DataTypes.INTEGER(11),
// 允许为空
allowNull: false,
// 主键
primaryKey: true,
// 自增
autoIncrement: true,
},
username: {
type: DataTypes.STRING,
allowNull: false,
// 唯一
unique: true
},
password: {
type: DataTypes.STRING,
allowNull: false
},
})
}
// ./models/index.js
const Sequelize = require('sequelize')
const config = require('../databse.config')
const sequelize = new Sequelize(config)
const path = require('path');
const User = sequelize.import(path.join(__dirname, 'User'))
module.exports = {
User
}
4. 数据表初始化
// ./init.js
const { User } = require('./models/index.js')
User.sync()
/*
// 标准同步
// 只有当数据库中不存在与模型同名的数据表时,才会同步
sequelize.sync()
// 动态同步
// 修改同名数据表结构,以适用模型。
sequelize.sync({alter: true})
// 强制同步
// 删除同名数据表后同步,谨慎使用,会导致数据丢失
sequelize.sync({force: true})
// 另外,当你指定表与表之间的关联后,修改被关联的表结构时会抛出异常。
// 需要先注释掉关联代码,然后更新同步模型后,再取消掉注释即可。
// 再另外,当你有新的关联时必须使用动态同步才会生效。
*/
执行node init.js
感受下。
5. 数据表新增数据
// ./add.js
const { User } = require('./models/index.js')
User.create({
username: 'heihei',
password: 'haha'
})
执行node add.js
感受下。
参考:
http://docs.sequelizejs.com/
https://juejin.im/post/5bfc03b851882516d725e013