【Vue3+Express实战-2】sequilze连接Mysql
hello,各位小伙伴,我是半夏,一个搞前端的程序员。
在上一个课程中,我们已经搭建好了开发所需要的环境,
本节课程,我们主要是使用Sequlize连接操作数据库。
在正式开始之前,我们现在介绍一下整个系统的架构
在VUE组件中,通过axios往后端接口发送请求,后端收到请求之后通过orm区操作数据库。然后将数据返回给组件,组件进行渲染。
使用sequlize操作mysql数据库
介绍
Sequelize 是一个基于 Promise 的 Node.js ORM,适用于 Postgres、MySQL、MariaDB、SQLite 和 Microsoft SQL Server
要连接到数据库,必须创建一个 Sequelize 实例. 这可以通过将连接参数分别传递到 Sequelize 构造函数或通过传递一个连接 URI 来完成,Sequelize 提供了三种连接数据库的方式!
配置mysql
在VScode中打开项目,然后再根目录下创建app文件夹,并在app文件夹下新建db.config.js文件,开始编写数据库的配置文件!我们单独将配置文件抽出来,可以有效的解耦,如果我们想配置多个数据库,那么只要编写一个通用的Sequlizes实例,就可以来连接多个数据库。
这里的DB: “testdb”,需要提前在mysql种创建一个testdb数据库
module.exports = {
HOST: "localhost",
USER: "root",
PASSWORD: "root",
DB: "testdb",
dialect: "mysql",
};
连接mysql
上面我们已经写好了数据库的配置文件,下面我们就来编写一个通用的Sequlize实例!
在app文件夹下创建models文件,然后新建index.js。下面开始编写连接数据库的代码:
const dbConfig = require("../config/db.config.js");
const Sequelize = require("sequelize");
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
host: dbConfig.HOST,
dialect: dbConfig.dialect,
});
const db = {};
db.Sequelize = Sequelize;
db.sequelize = sequelize;
module.exports = db;
这里请注意:我们最后又创建了一个db 对象,定义这个db对象的原因是,我们可以将Sequelize类和sequelize都挂载到db上,进行一个统一的管理,同时还可以将下面要创建的模型都挂载到db上!
创建课程模型
我们已经可以正常的连接数据库了,那连接数据库之后,我们是不是需要在testdb创建表!之前我们可能是需要编写sql脚本或者使用可视化工具创建表,添加字段。不过Sequelizes可以通过定义模型,同步模型到数据库中,从而自动的在数据库中创建表以及字段。也就是说Sequelizes的模型对应数据库中的表!
在Sequelizes中有两种定义数据模型的方式。
这里我们使用define方式,defined是通过Sequlize实例来调用的。
我们定义了一个函数,这个函数接受sequelize,实例 Sequelize类两个参数,然后在函数内部通过调用实例上define函数来创建一个Tutorial实例。
module.exports = (sequelize, Sequelize) => {
const Tutorial = sequelize.define("tutorial", {
title: {
type: Sequelize.STRING
},
description: {
type: Sequelize.STRING
},
published: {
type: Sequelize.BOOLEAN
}
});
return Tutorial;
};
虽然我们只定义了title,description published 三个字段,但是Sequelize 将会自动这些列将自动生成:id、createdAt、updatedAt。
然后,我们在app/models/index.js,中调用这个函数。
......
db.Sequelize = Sequelize;
db.sequelize = sequelize
db.tutorials = require("./tutorial.model.js")(sequelize, Sequelize);
module.exports = db;
这里我们再来说一下,定义db对象的好处。
- 将Sequelize类, sequelize实例挂在db上,这样我们在其他文件中用到Sequelize类, sequelize实例,是只需要import db就可以,不需要引入两次
- 可以将模型都挂在到db。这里只是一个模型,如果100个模型,某个文件,我们可能会需要引入99个模型,那么就要写99个import,但是你都挂在到db上,就只需要写一次import。
同步模型
定义好模型之后,我们就可以同步模型!
在server.js中,我们引入并使用刚才创建的sqeuilze
const db = require("./app/models");
db.sequelize.sync().then(() => {
console.log("创建数据库");
});
运行系统,自动创建数据表
执行下面的命令,后台启动,并且自动在testdb创建名为tutorials数据表!
node server.js
至此我们已经成功连接到数据库!
- 点赞
- 收藏
- 关注作者
评论(0)