首先把中文文档放上来把:sequelize中文文档
准备操作
在用sequelize的时候,首先需要下载mysql2
和sequelize
驱动程序
控制台输入:
npm i mysql2
npm i sequelize (也可以是 yarn i sequelize)
拓展: 因为我们现在展现的是与mysql数据库所以上面下载的是mysql2驱动程序。
其实sequelize还能与其他数据库进行交互:
# 选择以下之一:
$ 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
四个步骤向数据库里面建表
相当于建立四个文件,每个文件是一个步骤
步骤一 (db.js文件)
建立与数据库连接的连接池
//引入sequelize模块
const { Sequelize }=require("sequelize");
/*
实例化一个sequelize对象
参数一:数据库名称
参数二:用户名
参数三:密码
参数四:配置项
*/
const sequelize = new Sequelize('test', 'root', '123456', {
host: 'localhost', //本机名称
dialect:"mysql", //配对的数据库
logging:false //取消控制面板上的日志提示
});
module.exports=sequelize; //导出本文件,供其他文件使用
步骤二 (Admin.js文件)
定义表信息
//引入导出的db文件
const sequelize = require("./db");
//从sequelize模块中解构数据类型
const { DataTypes } = require("sequelize");
//定义一个表,参数一是表名,参数二是列名及其设置,参数三是可选配置项
const Admin = sequelize.define("Admin", {
//列名为rootname,数据类型为string,不允许值为空
rootname: {
type: DataTypes.STRING,
allowNull: false
},
//列名为rootname,数据类型为string,不允许值为空
rootpsd: {
type: DataTypes.STRING,
allowNull: false
},
}, {
/*
在完成建表后,系统会自动给这个表定义三个列:
1.id
2.createAt 建表时间
3.updateAt 更新表时间
*/
createdAt: false,//不允许创建createAt列
updatedAt: false//不允许创建updateAt列
});
//导出本文件
module.exports = Admin;
步骤三 (sync.js文件)
将表同步到数据库中
//导入表文件
require("./Admin");
//导入连接池文件
const sequelize=require("./db");
//同步文件到数据库中
sequelize.sync(
{ alert: true }
)
console.log("所有模型均已成功同步.");
步骤四 (demo.js文件)
本文件用于执行以上三个文件,因为上面三个文件都是一层接一层引入文件的,所以本文件直接引入最终的同步文件即可执行以上的所有代码,控制台执行本文件即可。
其实也可以将这些代码全部写到一个文件里面去,但是这样的分层结构更利于项目维护,我们可以直接用mvc三层架构去开发
require("./models/sync");
利用三层架构开发给已建立的表里面定义数据
如下图是本次案例,上面建表的文件都放在models文件夹下,servers文件夹下的文件是对表的操作过程代码。test文件代码是准备好的数据
adminServer文件
const Admin=require("../models/Admin");
const md5 = require("md5");
//给数据库中admin表添加数据
exports.addadmin=async function(adminobj){
//利用md5加密密码
adminobj.rootpsd=md5(adminobj.rootpsd);
//利用create函数添加数据到数据库中
const ins=await Admin.create(adminobj);
return ins.toJSON();
}
//修改数据库中admin表的数据
// exports.updateAdmin=async function(updateObj1,updateObj2){
//利用update函数添加数据到数据库中
// await Admin.update(updateObj1,updateObj2);
// }
test文件
require("./models/sync");
const admintest=require("./servers/AdminServer");
//添加数据
admintest.addadmin({
rootname:'张三',
rootpsd:'123456'
})
//修改数据
// admintest.updateAdmin(
// {rootname:"李四"},
// {
// where:{
// rootname:"张三"
// }
// }
// )
另外还有删除数据和查询数据,请移步官方文档查看用法
整个流程(包括建表流程):
1.db文件:创建连接数据库的连接池
2.admin文件:创建表信息
3.sync文件:将admin建立好的表同步到数据库中
4.demo文件:执行以上三个文件里面的代码
5.AdminServer文件:建立操控admin表里面数据的通道
6.test文件:将准备好的数据通过调用AdminServer文件里面函数传输到数据库中