持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情
Express-学习之路 10,api接口 - 连接 mysql 数据库
引言
本系列会以我的一个理解,来介绍并开始学习 Express。
中间会插入自己所联系到的 乱七八糟 的 知识点。
数据库操作
数据库
-
查看所有的数据库
show databases; -
创建数据库 (xxx 数据库名称)
create database xxx; create database if not exists xxx; -
删除数据库
drop database xxx; drop database if exists xxx; -
使用数据库
use xxx; -
查看当前是哪个数据库
select database();
表
-
查询当前数据库所有表
show tables; -
创建表 (xxx 表名,yyy 字段名 类型 等,zzz 注释)
create table xxx(yyy) comment zzz; -
查询表结构 (xxx 表名) --> 简单的结构
desc xxx; -
查询指定表的建表语句 --> 详细的结构
show create table xxx;
Express 连接数据库
首先我们需要创建一个名 exapi 的数据库
create database exapi;
通过 Navicat 工具进行连接,并且在 exapi 数据库内部创建一个用户 user 表
都已准备完全,我们开始 Express 与 mysql 进行连接。
-
首先在项目中安装 mysql
npm i mysql -
在 model 目录下,创建 index.js 文件,进行连接。
- model/ 对数据进行的操作 -- index.js -
index.js 中进行 mysql 数据库连接的配置操作
这里暴露出去 sqlConnect 方法,之后在 controller 控制器 目录下的相关文件进行进行引入调用即可。
const mysql = require('mysql') const config = { connectionLimit: 10, // 连接池的大小 host: 'localhost', // 主机 user: 'root', password: '123456', database: 'exapi' } const sqlConnect = (sql, sqlArr, callback) => { // 创建连接池 const poll = mysql.createPool(config) // 获得一个连接 poll.getConnection((err, connection) => { if (err) throw err // 查询 connection.query(sql, sqlArr, callback) // 释放 connection.release() }) } module.exports = sqlConnect -
在 controller/user/index.js 文件下,引入,并编写 sql 语句
处理连接报错
此时页面代码处理完成,我们访问 http://localhost:8089/api/user
如果报下面这个错误的话
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
说明 Node 不支持当前 mysql 版本加密方式。具体原因
解决方案:打开命令行,输入下面,来验证账户密码。
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
此时再次执行 node app.js 即可。
可以看到我们的数据连接已经成功了。
但是里面还没有任何数据,我们这里可以尝试手动先添加数据。
可以看到成功的返回了数据。
总结
学习了数据库的操作,以及 Express 连接 mysql 数据库。处理了连接数据库报错问题。