node中利用sequelize模块mysql数据库交互

首先把中文文档放上来把:sequelize中文文档

准备操作

在用sequelize的时候,首先需要下载mysql2sequelize驱动程序

控制台输入:
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文件里面函数传输到数据库中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值