先看常规的,使用mysql连接数据库的写法
(async () => {
const mysql = require('mysql2/promise')
// 链接设置
const cfg = {
host: 'localhost',
user: 'root',
password: 'password',
database: 'testdb1'
}
const connection = await mysql.createConnection(cfg)
let ret = await connection.execute(`
CREATE TABLE IF NOT EXISTS test (
id INT NOT NULL AUTO_INCREMENT,
message VARCHAR(45) NULL,
PRIMARY KEY (id))
`)
console.log('create:', ret)
ret = await connection.execute(`
INSERT INTO test(message) VALUES (?)
`, ['abc'])
console.log('insert', ret)
const [rows, fields] = await connection.execute(`
SELECT * FROM test
`)
console.log('rows:' + JSON.stringify(rows))
})()
接着引入sequelize中间件
// 像操作对象一样操作数据库就是sequelize干的事情
(async () => {
const Sequelize = require('sequelize')
const sequelize = new Sequelize('testdb1', 'root', 'password', {
host: 'localhost',
dialect: 'mysql'
})
// 定义模型
const Fruit = sequelize.define('Fruit', {
id: {
type: Sequelize.DataTypes.UUID,
defaultValue: Sequelize.DataTypes.UUIDV1,
primaryKey: true
},
name: { type: Sequelize.STRING(20), allowNull: false },
price: { type: Sequelize.FLOAT, allowNull: false },
stock: { type: Sequelize.INTEGER, defaultValue: 0 }
})
let ret = await Fruit.sync({ force: true })
// insert
ret = await Fruit.create({
name: 'banana',
price: 3.5,
stock: 500
})
console.log('create', ret)
// update
ret = await Fruit.update({
price: 4
}, {
where: { name: 'banana' }
})
// select
const op = Sequelize.Op;
ret = await Fruit.findAll({
where: {
price: { [op.lt]: 5, [op.gt]: 2 }
}
})
console.log('select', JSON.stringify(ret))
})()