Node.js + Sequelize 操作 MySQL 数据库
一. Sequelize 简介二. 基本操作1. 连接数据库2. 创建一张表3. 对数据表操作3.1 插入操作3.2 读取操作3.3 修改操作3.4 删除操作一. Sequelize 简介
Sequelize
是一个Node.js
平台基于 Promise 的ORM
用于操作
管理MySQL
、Postgres
、SQLite
等关系型数据库
。Sequelize 官方文档
:/en/latest/
二. 基本操作
1. 连接数据库
const {Sequelize, DataTypes } = require('sequelize');/*// new Sequelize(database, [username=null], [password=null], [options={}])// class Sequelize 接收4个参数,后三个参数是可选的// 没有密码和optionsvar sequelize = new Sequelize('database', 'username')// 没有optionsvar sequelize = new Sequelize('database', 'username', 'password')// 没有密码有optionsvar sequelize = new Sequelize('database', 'username', null, {})// 都有var sequelize = new Sequelize('my_database', 'john', 'doe', {})// new Sequelize(uri, [options={}])// 通过uri连接数据库var sequelize = new Sequelize('mysql://localhost:3306/database', {})*/const sequelize = new Sequelize('数据库名', '用户名', '密码', {host: 'localhost', // 数据库地址dialect: 'mysql', // 指定连接的数据库类型pool: {max: 5, // 连接池中最大连接数量min: 0, // 连接池中最小连接数量idle: 10000 // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程}});try {sequelize.authenticate();console.log('mysql连接成功.');} catch (error) {console.error('mysql连接失败:', error);}
2. 创建一张表
var User = sequelize.define('user', {id: {allowNull: false,autoIncrement: true,primaryKey: true,type: DataTypes.INTEGER},userName: {type: Sequelize.STRING, // 指定值的类型field: 'user_name' // 指定存储在表中的键名称},// 没有指定 field,表中键名称则与对象键名相同,为 emailemail: {type: Sequelize.STRING}}, {// 如果为 true 则表的名称和 model 相同,即 user// 为 false MySQL创建的表名称会是复数 users// 如果指定的表名称本就是复数形式则不变freezeTableName: false});// 创建表// User.sync() 会创建表并且返回一个Promise对象// 如果 force = true 则会把存在的表(如果users表已存在)先销毁再创建表// 默认情况下 forse = falsevar user = User.sync({force: false });
3. 对数据表操作
3.1 插入操作
方式一var item1 = Item.build({userName:'Laptop',email: 'asdasd@',});//Inserting Data into databaseitem1.save().complete(function (err) {if (err) {console.log('Error in Inserting Record');} else {console.log('Data successfully inserted');}});
方式二
sequelize.sync().success(function () {Item.create({userName:'Laptop',email: 'asdasd@',}).success(function (data) {console.log(data.values)})});
3.2 读取操作
//读取所有的数据Item.find({}).complete(function (err,data) {console.log(data);});//条件读取Item.find({where:{name:'Laptop'}}).complete(function (err, data) {console.log(data);});
3.3 修改操作
//更新Laptop 到 ComputerItem.find({where:{name:'Laptop'}}).complete(function (err, data) {if(err){console.log(err);}if(data){data.updateAttributes({name:'Computer'}).success(function (data1) {console.log(data1);})}});
3.4 删除操作
//删除所有名字为compter的数据Item.find({where: {name: 'Computer'}}).complete(function (err, data) {if (err) {console.log(err);} else {data.destroy({}).success(function (err, data) {if(err){console.log(err);}else{console.log(data);}})}console.log(data);});