网站首页 > 技术文章 正文
如果大家需要八股文,或者想要跳槽、涨薪、进阶学习,那么可以留意公重号:码农补给站同时也会更新前端的时事
下载mysql镜像
在docker中搜索mysql,下载mysql镜像,界面版直接点击pull即可,如果使用命令行,执行下面代码进行安装:
# sudo docker pull 镜像名:版本号
sudo docker pull mysql # 本文安装的是latest版本
启动mysql服务
在控制台输入下面命令,启动mysql容器
sudo docker run --name my_blog -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql --lower_case_table_names=1
# –name:给新创建的容器命名,此处命名为demo_mysql
# -e:配置信息,此处配置mysql的root用户的登陆密码
# -p:端口映射,此处映射主机3306端口到容器pwc-mysql的3306端口
# -d:成功启动容器后输出容器的完整ID
# mysql:mysql镜像名字
# lower_case_table_names:mysql设置大小写是否敏感的一个参数
界面可视化工具安装与使用
界面可视化工具我用的DBeaver(点击进行下载),但是安装mysql驱动时候,一直报错com.mysql.cj.jdbc.Driver,是因为Maven地址失效无法下载,我们在窗口 - 首选项,找到Maven添加仓库地址如下:
阿里:http://maven.aliyun.com/nexus/content/groups/public/
腾讯:http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
我们驱动下载成功后,又遇见一个新的问题,一直报错Public Key Retrieval is not allowed,是因为当禁用 SSL/TLS 协议传输后,客户端会使用服务器的公钥进行传输,默认情况下客户端不会主动去找服务器拿公钥,进而会出现错误,我们需要在数据库 - 驱动管理器驱动属性中手动添加allowPublicKeyRetrieval属性,值为true。
再次点击进行连接,即可连接成功
通过node连接mysql数据库
# 新建文件夹,并通过npm init初始化仓库配置文件
npm init -y
# 安装mysql2
npm i mysql2
这里说明一下为什么要用mysql2,而不是mysql,因为二者的密码算法不同,在查阅资料后,发现mysql连接mysql 版本8及以上会报下面的错误,因此采用了mysql2
我们首先先向数据库添加表和一条数据,如下图:
在根目录下创建src目录,并添加db.js文件,通过mysql2连接mysql数据库代码,注意database与password是上面启动mysql时候定义的:
const mysql = require('mysql2')
//链接配置
var connection = mysql.createConnection({
host: 'localhost', //ip
user: 'root', //用户名
password: '123456',//密码
database: 'my_blog' //数据库名
});
//建立链接
connection.connect();
//进行查询user_info表中的数据
connection.query('SELECT * from user_info', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results);
});
我们将启动命令在package.json中进行定义,方便后续启动数据库连接,在script里面添加下述代码:
"scripts": {
"start": "node ./src/db.js"
},
在控制台运行npm run start,输出一个简单的数据库查询的返回,即数据库连接成功!
接口定义
在上面我们已经将数据库进行创建并能够连接了,这时候作为一个前端,需要调取接口来操作数据库,我们就需要定义接口来操作数据库了,我们先介绍一下需要用到的第三方依赖:
Express: Express是一个简洁而灵活的 Node的Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
body-parser: bodyParser中间件用来解析http请求体,是Express默认使用的中间件之一。使用express生成一个网站,它默认已经使用了bodyParser.json与bodyParser.urlencoded的解析功能,除了这两个,bodyParser还支持对text、raw的解析,综上所述,bodyParser可以理解为是用来解析json数据格式的。
cors: cors处理跨域问题
安装所需依赖,执行下面的命令
npm install express body-parser cors --save
在上面,我们已经可以获取到连接的实例connection,我们不可能每一次都重新连接,所以我们可以创建一个连接,将查询或修改的代码,单独写在一起,引入这个连接实例,我们在src下创建一个interface.js文件如下:
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const { connection } = require('./db')
const app = express();
const parser = bodyParser.urlencoded({ extended: false });
app.use(cors());
// 获取user_info表数据
app.get('/query/user-info', (req, res) => {
const sql = 'select * from user_info'
connection.query(sql, function (error, results) {
if (error) throw error;
res.send({
status: 200,
message: 'get 请求成功', //状态的描述
query: req.query, // 请求参数
data: results // 返回数据
})
});
})
// 更新用户名
app.post('/edit/user/userName', parser, (req, res) => {
const { id, userName } = req.query;
const sql = `update user_info set userName="${userName}" where id="${id}"`
connection.query(sql, function (error, results) {
if (error) throw error;
res.send({
status: 200,
message: 'post 成功', //状态的描述
query: req.body, // 请求参数
data: results // 返回数据
})
});
})
// 启动服务器
app.listen(3000, () => {
console.log('Server started on port 3000');
});
在上面的代码中可以看出,我们将db连接的实例,使用const { connection } = require('./db')引入,所以我们在db.js中需要将这个实例对外暴露,修改后代码如下:
const mysql = require('mysql2')
//链接配置
const connection = mysql.createConnection({
host: 'localhost', //ip
user: 'root', //用户名
password: '123456',//密码
database: 'my_blog' //数据库名
});
//建立链接
connection.connect();
module.exports = { connection }
为了方便,我们将package.json中的script新增一个命令如下:
"scripts": {
"start:db": "node ./src/db.js",
"start:serve": "node ./src/interface.js"
},
接下来我们在控制台分别启动db服务与interface接口,出现下面图中显示的,即为启动成功!
npm run start:db # 启动db服务
npm run start:serve # 启动interface接口
验证接口调用
1. 验证查询接口(get)
使用apiFox调取本地接口,查询到了数据库中数据,查询接口成功!
2. 验证修改用户名接口(post)
使用apiFox调取本地接口,修改用户名,重新查询用户信息,修改成功!
结语
我们在这篇文章中讲述了如何使用docker搭建mysql环境,并通过node从零开始创建一个简单的服务,并连接数据库,在搭建环境中间,作者也查阅了大量资料与踩坑,都在文章进行了说明,全部代码作者上传到了Gitee上面,有需要的掘友们可以下载进行尝试,不过数据库的搭建,就需要大家自己去配置了。
因为作者也是第一次尝试,所以可能设计层面并不是很理想,大家有好的建议,也可以打在评论区,大家一起探讨一下,不喜勿喷。
原文链接:https://juejin.cn/post/7311163800144773159
- 上一篇: ES6基础——环境构建、任务自动化、服务器搭建
- 下一篇: Web前端怎么入门,可以自学吗?
猜你喜欢
- 2024-11-27 ES6基础——环境构建、任务自动化、服务器搭建
- 2024-11-27 Goframe+Vue3全栈开发入门1——环境搭建
- 2024-11-27 前端开发环境(一)
- 2024-11-27 零基础学习web前端开发,看看一下建议少走弯路
- 2024-11-27 基于 Vue3+TS 构建Cesium组件库VueCesium
- 2024-11-27 万能前端框架uni app初探01:搭建开发环境
- 2024-11-27 一步步从头搭建 Vue 开发环境
- 2024-11-27 windows搭建本地grafana前端开发环境
- 2024-11-27 搭建H5开发环境(windows)
- 2024-11-27 第一天:先搭建前端项目
你 发表评论:
欢迎- 596℃几个Oracle空值处理函数 oracle处理null值的函数
- 590℃Oracle分析函数之Lag和Lead()使用
- 578℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 573℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 570℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 563℃【数据统计分析】详解Oracle分组函数之CUBE
- 549℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 543℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- 前端接口 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)