MySQL之旅(3) nodeJS + express + MySQL 实现接口连接数据库
导言: 由于本人初次尝试,真的一言难尽啊!遇到很多问题, 问题我会列出来,如果你有好的方法实现欢迎留言!
问题:
1·nodeJS与MySQL版本8.0+冲突问题?
查资料得出结论有以下几种:
a,MySQL降版本 nodeJs 支持 5.7+版本
b,由于MySQL卸载太麻烦了 我选择的这种是把MySQL密码改简单一点,或许这就是加密简单的原因吧!最后结果是正常连接到数据库!
以下是MySQL改密码指令:
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘修改后的密码’
刷新权限:
FLUSH PRIVILEGES
tips:我的密码改成超简单的123,毕竟用来测试嘛
现在步入正题 nodeJs写的接口连接MySQL数据:
步骤一:确定安装了node;
检测安装指令:
node -v
若没有安装:nodeJS传送门
安装完成后开始node项目。
步骤二:分以下几个小步骤
a,选个目录,起个名 比如 serverNode
b,cd到这个目录,输入指令
npm init
npm install body-parser express mysql cors -S
c,根目录有个app.js文件,若没有自己创建一个app.js
var http = require('http');
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
/**
* 连接 MySQL 数据库
* */
var mysql = require('mysql');
var connection = mysql.createConnection({
host:'127.0.0.1',
user: 'root',
password: '123',
database: 'userslist',
port: '3306'
});
connection.connect((err) => {
if(err) throw err;
console.log(`连接成功`)
});
var app = express();
// 跨域
// 跨域
const cors = require( 'cors');
app.use(cors());
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
// app.use(function(req, res, next) {
// next(createError(404));
// });
// 跨域 同一站点:协议,域名,端口都一样的叫做同一个站点
//设置跨域访问 res.header("Access-Control-Allow-Headers", "X-Requested-With") || res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');;
// app.all('*', function(req, res, next) {
// res.header("Access-Control-Allow-Origin", "*");
// res.header("Access-Control-Allow-Headers", "X-Requested-With");
// res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
// res.header("X-Powered-By",' 3.2.1')
// res.header("Content-Type", "application/json;charset=utf-8");
// next();
// });
// 接口
app.get('/', (req, res) => {
res.send('<div>hello world</div>')
})
app.get('/login',(req, res) => {
res.json('<div>hello login</div>')
})
app.get('/checkMysql', (req, res) => {
let sql = `SELECT * FROM person`;
connection.query(sql, (err, result) => {
if(err){
console.log(err);
res.send(`<p>err:${err}</p>`)
}else{
console.log(result);
res.json(result)
}
})
})
// 设置端口
app.listen(3434, console.log("application is start at port 3434"));
module.exports = app;
tips: 以上全部代码,因为下班了,细节我就直接略过了,代码有注释;
启动node
指令:
npm start
正常启动后显示以下内容:
PS D:\server\nodeServer> npm start
> nodeserver@0.0.0 start D:\server\nodeServer
> babel-node app
application is start at port 3434
连接成功
最后随便打开一个浏览器,输入网址:http://127.0.0.1:3434/checkMysql
会显示以下内容:
[
{
"number": 2,
"name": "Yaya",
"birthday": "2021-05-20T16:00:00.000Z",
"age": 18,
"member_id": 1,
"cardID": 622455464,
"phone": 1399985882,
"address": null
},
{
"number": 3,
"name": "Long",
"birthday": "2021-06-20T16:00:00.000Z",
"age": 18,
"member_id": 2,
"cardID": null,
"phone": 42221313,
"address": null
},
{
"number": 1,
"name": "zhang",
"birthday": "2021-12-10T16:00:00.000Z",
"age": 20,
"member_id": 3,
"cardID": null,
"phone": 546513221,
"address": null
}
]
我这边自己用的是postman: 感兴趣的朋友可以下载一下:postman传送门
最后附上截图:
我们不是一群默默无闻的码农,而是推进世界进步的开荒者