搭建node服务器环境(让服务器具有访问数据库mysql的能力)

本文档详细介绍了如何使用Node.js的Koa2框架搭建服务器,包括初始化项目、安装必要的中间件如koa-router、koa-bodyparser、koa-cors和koa-static。还展示了如何编写服务器接口,安装并配置mysql模块进行数据库访问,以及处理文件上传。最后提到了mysql8的密码加密问题及解决方案,并提及jQuery.form.js插件在文件上传中的应用。
摘要由CSDN通过智能技术生成

1.准备空文件夹

2.终端cd到文件夹中

3.将该普通文件夹初始化成项目文件夹

终端输入 npm init

4.查看项目中的 package.json 文件

创建 index.js文件

5.安装服务器模块 koa

终端输入 cnpm install koa --save
(cnpm是npm淘宝镜像,–save则是在package.json文件中记录安装日志)

6.在index.js文件中编写服务器的代码

const Koa = require('koa');
const app = new Koa();


// response
app.use(ctx => {
  ctx.body = 'Hello Koa';
});
//服务器端口为3000
app.listen(3000);

7.运行服务器进行测试

终端输入 node index.js
(运行成功后打开浏览器输入地址localhost:3000,页面会显示Hello koa 字样)

8.安装路由模块 koa-router 进行服务器接口编写

终端输入 cnpm install koa-router --save

// 服务器的路径 koa-router
const Router = require('koa-router');
const router = new Router();

router.get('/', (ctx, next) => {
    ctx.body = "我是主页面"
});

再次运行成功后打开浏览器输入地址localhost:3000/,页面会显示 ‘我是主页面’

9.安装 网络请求的参数解析模块 koa-bodyparser

终端输入 cnpm install koa-bodyparser --save

// 获取网络请求的参数 koa-bodyparser
var bodyParser = require('koa-bodyparser');
app.use(bodyParser());

GET: ctx.request.query
POST: ctx.request.body
FILE: ctx.request.files
(post接口测试需要写Ajax代码,也可以安装postMan进行测试)

10.安装服务器开发访问权限模块 koa-cors

终端输入 cnpm install koa-cors --save

// 将服务器开发访问权限 允许所有人访问服务器
var cors = require('koa-cors');
app.use(cors());

11.让服务器具有文件访问能力 koa-static

终端输入 cnpm install koa-static --save

// 静态资源 koa-static
const serve = require('koa-static');
app.use(serve(__dirname + '/static/'));

访问路径测试(不用带上 static 这个路径)
http://localhost:3000/111.jpg

12.让服务器具有访问数据库mysql的能力 mysql

终端输入 cnpm install mysql --save

// 让服务器具有访问数据库mysql的能力
var mysql = require('mysql');
var db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '', //写入自己mysql数据库的密码
    database: '' //写入自己需要引入的数据库名称
});
db.connect();
//在接口 /aaa 中 写
db.query('sql语句'function (err,data,fields) {
	//data --> [数据库类型的数据,是不可以直接使用的]
	data = JSON.stringify(data)
    data = JSON.parse(data)
    //[对象,对象] --> 可以直接使用
    console.log(data)
})

13.Promise 承诺写法

var prom = new Promise(function (f1,f2) {
	db.query('sql语句',function (err,data) {
		if (err) {
			f2(err)
		} else {
			data = JSON.stringify(data)
			f1(data)
		}
	})
})
ctx.body = await prom; //给接口增加 async
// '/aaa' , async (ctx,next)

14.mysql8 额外补充的问题

  1. 安装mysql8 假设安装的时候设置的密码是:Leifeng123

  2. 通过 终端 访问mysql
    mysql -u root -p
    Leifeng123
    可以访问mysql

  3. 通过工具或者项目中的mysql模块去访问数据库
    var mysql = require(‘mysql’);
    var db = mysql.createConnection({
    host : ‘localhost’,
    user : ‘root’,
    password : ‘Leifeng123’,
    database : ‘school’
    });
    db.connect();
    访问不成功

  4. 原因:
    mysql8 密码加密方式不是之前的正常加密方式

  5. 解决方法:
    让mysql8 中的密码采用之前的统一的加密方式

  6. 解决步骤:
    终端: mysql -u root -p
    password: Leifeng123
    show databases;
    use mysql;
    将mysql中的root的密码改为正常加密模式
    alter user ‘root’@‘localhost’ idetified with mysql_native_password by ‘Leifeng123’;
    flush privileges;
    exit;
    此时上方第3步就可以成功访问了

15.给服务器安装文件上传模块 koa-body

终端输入 cnpm install koa-body --save

//读取文件
var fs = require("fs")
//给服务器安装上传文件模块(限制文件大小)
const koa_body = require("koa-body")
app.use(koa_body({
    multipart: true,
    formidable: {
        maxFileSize: 1024 * 1024 * 200
    }
}))
router.post('/upload', (ctx, next) => {
	// GET: ctx.request.query
	// POST: ctx.request.body
	// FILE: ctx.request.files
	var file = ctx.request.files.xxx
	var file_name = file.name
	var file_name_arr = file_name.split(".")
	var file_type = file_name_arr[file_name_arr.length - 1]
	var file_path = file.path

	// file_path stream ----> /static/imgs/sb.jpg
	// 1.导入文件操作系统(fileSystem 简称 fs)
		// require("fs")
	// 2.利用文件操作系统,将path中的数据流读出来
	var read_stream = fs.createReadStream(file_path)
	// 3.准备一个数据流路径 /static/imgs/sb.jpg
	var cur_time = new Date().getTime()
	var des_name = cur_time + "." + file_type
	var des_stream = fs.createWriteStream("./static/imgs/" +
des_name)
	// 4.将2中的数据流 流入4中
	read_stream.pipe(des_stream)

	ctx.body = "上传成功"
});

16.jQuery.form.js 插件的使用

<script>
	$(".upload_form")[0].onsubmit = function () {
		event.preventDefault()
		// 自己获取文件数据并通过ajax提交

		$(this).ajaxSubmit({
			error: function () {
				console.log("提交失败")
			},
			success: function () {
				console.log("提交成功")
			},
			uploadProgress: function (e , pos , total , percent) {
				console.log(percent)
			}
		});
	}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值