Part3-Koa与MySQL

一、Koa2安装

创建一个空白目录,然后进入终端,并在终端对koa进行安装:

# 项目初始化
$ npm init -y

# 安装koa2
$ npm i koa2 -S

# 安装nodemon
$ npm i nodemon -D

二、入口文件

在项目根目录创建 app.js 文件,并在上一步操作中生成的 package.json 里配置:

{
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon app.js"
  },
}

app.js 中:

然后运行 npm run start ,并在浏览器输入 http://localhost:9000/ 即可看到页面效果。

提示:

为了以后对端口和IP的管理方便,其实可以将IP与端口放在一个文件导出,然后导入使用,这样就可以方便管理:

然后到app.js或者需要使用IP与端口的文件中导入使用:

三、洋葱模型

学Koa必须要了解 洋葱模型 :

KoaExpress 都会使用到中间件,Express的中间件是顺序执行,从第一个中间件执行到最后一个中间件,发出响应:

Koa是从第一个中间件开始执行,遇到 next 进入下一个中间件,一直执行到最后一个中间件,在逆序,执行上一个中间件 next 之后的代码,一直到第一个中间件执行结束才发出响应。

对于这个洋葱模型,我们用代码来解释一下。假如把上面的代码改写成:

那么在浏览器刷新后,控制台得到的顺序是:

现在可以看到,我们通过 next可以先运行下个中间件,等中间件结束后,再继续运行当前 next() 之后的代码。

四、路由安装

当需要匹配不同路由时,可以安装:

app.js 修改:

此时,到浏览器刷新并在地址栏最后添加 /manage 即可得到根路径内容和列表模块内容。

备注:

五、路由拆分

当项目较大,路由较多时,我们需要划分模块。此时,就需要对路由进行拆分。这个项目的后端要服务于Web官网和后台管理系统,因此我们将路由划分成两个模块:web与manage。

1、创建 router 文件夹

创建router文件夹,并在其中创建:index.js (路由总入口文件)、manage/index.js (manage模块路由入口文件)、web/index.js (web模块路由入口文件):

到浏览器刷新 localhost:9000/managelocalhost:9000/web 即可得到manage和web两个模块返回的数据。

2、路由重定向(了解)

那么有同学会问了,如果我想直接从 localhost:9000 重定向到 localhost:9000/home 该怎么办?

我们可以在 router/index.js 中做如下配置:

3、404无效路由

如果被访问到无效路由,那么我们可以统一返回404页面:

routererrorPage.js :

router/index.js 中:

app.js 中引用:

六、后端允许跨域(了解)

前端想跨域,可以设置proxy。如果后端允许跨域,可以如下操作:

七、读取静态资源文件

首先安装 koa-static,命令行代码如下:

然后在项目的根目录下创建 assets 后,将图片资源(图片自己随便找一张)文件夹 images 放到其中。我们假定404页面需要返回一张错误警告图,可以在 app.js 中执行以下操作:

假设其中有一张图片叫做 404.gif,那么我们打开浏览器,访问:http://localhost:9000/images/404.gif 即可得到图片。这里注意:

路径上不需要写assets,因为我们已经指定了访问资源时, http://localhost:9000 自动指向 assets 文件夹。由此,我们知道数据库中图片的地址只需要填写 /images/404.gif 即可。

如果我们希望打开404页面就显示这张图,就需要做如下步骤:

1、安装mime-types

2、使用fs读取文件

修改errorPage.js:

八、MySQL安装【软件还需整理】

1、Windows卸载MySQL

如果你曾装过MySQL,请务必先卸载干净。

首先检查电脑是否安装过MySQL,Windows执行:开始->运行->输入 services.msc。如果看到有MySQL,就代表安装了,如图:

image-20211203162439294

如果没有,就可以忽略删除MySQL这一步了。但如果看到了这一项,请右键先停止这项服务,然后:

快捷键 win+r 输入 regedit 进入注册表,找到 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 文件夹并对其进行删除。

如果有以下两个文件夹:

删除 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL文件夹。 删除 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL的文件夹。 注册表里没有这两个文件,就不用删除了。

然后找到mysql的安装位置,将mysql文件夹删掉:

image-20211203163147634

再到控制面板搜索 mysql ,确认已经没有了才可以,否则也进行卸载。

然后是另一个地方的:C:\Program Files (x86)\MySQL

这里写图片描述

还有一个隐藏文件下的,先点击【查看】->勾选【隐藏的项目】:

这里写图片描述

然后返回 C:/,可以看到一个名为ProgramData的文件夹,点开找到里面的MySQL,删除就行了

这里写图片描述

到此位置,恭喜你将mysql删干净了。

2、MySQL安装(Mac)

Mac安装包:链接:https://pan.baidu.com/s/1InjXljIzRO945iXlN6Pn3w 提取码:ndpb

3、MySQL安装(Windows)

Windows64位安装包:链接:https://pan.baidu.com/s/1OmdD-QldkvPGl0kQokbxJg 提取码:ndpb

下载完成后,直接解压并放到指定的目录中。例如:D:\server\mysql-5.7.23-winx64。

在mysql目录中新建 my.ini,并进行如下配置:

进入 mysql目录 下的 bin目录,命令行执行:

假如你得到:

代表初始化成功,并且 sQjjZSffo6)C 就是你的登录密码,可以在登陆后修改。你可以通过以下命令查询mysql版本:

然后以管理员身份进入这个bin目录,并输入以下安装命令:

启动输入以下命令即可启动mysql:

image-20211203170450386

如果你出现了上图的错误,可以执行:

这样就算是mysql安装并启动成功了。

4、修改MySQL密码

现在修改mysql密码,重新打开 my.ini,把这一行的注释解掉:

然后重启mysql:

此时的mysql密码已经被取消,可以随意输入密码进入:

然后修改密码:

注意:密码字段名 5.7 版本的是 authentication_string,之前的为 password

然后重新回到 my.ini 把刚刚那行注释掉:

重启mysql:

再一次尝试连接mysql:

出现以下界面,代表成功:

image-20211203171816525

由于版本等问题,建议在连接mysql成功后,再一次执行:

十、Navicat安装【软件还需整理】

Navicat for MySQL 是一套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形界面,能同时连接 MySQL 和 MariaDB 数据库。

有关 Navicat for MySQL 软件的下载和安装,大家可以百度搜索,当然,我这里也给大家找到一篇文章:

https://www.cnblogs.com/yanghongtao/p/10976526.html

1、Windows安装

Windows64位版本:链接:https://pan.baidu.com/s/1fly3pVOE_6oyauOEbLj1Vw 提取码:ndpb

下载解压后直接双击两个.exe程序进行安装与绿化:

image-20211203172743984

2、Mac安装

M1 Mac版本:链接:https://pan.baidu.com/s/14xIcYUKIbSBAynNS7eD15w 提取码:ndpb

打开直接拽入应用程序即可。

十一、数据库基本操作语句

1、数据库的连接与断开

如果希望在系统全局均可连接mysql,可以在系统环境变量配置mysql的bin目录。

2、数据库基本操作

数据库的创建、删除、显示与选择。

3、表操作

每个数据库都是由若干张表构成,每张表都是用来存储字段与数据的。以下是常用的表操作:

a. 创建表:

什么是自增约束?

如果字段id被定义为AUTO_INCREMENT,在插入一行数据的时候,自增值的行为如下:

1.如果插入数据时id字段指定为0、null或未指定值,那么就把这个表当前的AUTO_INCREMENT值填到自增字段

2.如果插入数据时id字段指定了具体的值,就直接使用语句里指定的值

b. 删除表(不要随便使用):

c. 查看表:

d. 描述表(查看该表的字段):

4、Navicat使用

打开安装好的Navicat软件,连接后其实也可以看到刚刚的这些数据:

image-20211203175853171

5、表数据的增删改查

以上表操作中我们创建了一张user表,现在我们通过对这张表进行CRUD(增删改查)。

a. 增加表数据

这里要注意:id是自增的字段,填写0或null都会从1开始自增。

b. 查询表数据

如果想要查询user表中所有的数据:

c. 更新表数据

假设现在想要修改李四的密码:

d. 删除表数据

假设现在想要删除张三这条数据:

有关数据库基本操作语句的介绍就到这里,后续在项目中会有更多实战性应用。

十二、NodeJs中操作MySQL

1、创建连接池

NodeJs中想要连接MySQL,需要先在项目内安装mysql库:

在操作下面的代码时,先创建一个数据库,本项目将创建一个名为cms的数据库。另外,在cms中添加一张user表,然后填充部分数据:

然后到utils.js中,引入mysql并创建连接池:

2、Node中使用连接池

假设用户访问/manage即可查询数据库cms中表user的数据。这样的话,需要找到manage/index.js:

打开浏览器访问http://localhost:9000,即可得到返回的数据:

image-20211205104329066

3、查询指定字段

使用逗号隔开字段,这种选择方式会返回一个数组

至此,我们已经可以实现在Koa中操作数据库。

最后更新于

这有帮助吗?