最近为了完成毕业设计学了下koa2,毕业设计题目要求用mysql数据库,因此总结一下:
安装与工具
安装mysql: npm install mysql --save
安装koa:npm install koa koa-body koa-router --save
安装fetch:npm install whatwg-fetch es6-promise --save
工具主要用的是XAMPP和navicat
复制代码
引入mysql
var mysql = require('mysql');
//1.获取数据库连接对象
var connection = mysql.createConnection({
host : 'localhost', //host
user : 'root', //数据库用户名
password : '', //密码
database : 'stuData' //数据库名
});
connection.connect();
//2.执行sql语句
var sql = 'select * from t_message'; //sql语句
connection.query(sql, function (error, results, fields) {
if(error) {
throw error;
}
return results; //返回查询数据库的结果
})
//3.关闭连接
connection.end();
复制代码
可以把引入mysql进行封装
//文件名为mysqlDB.js
var mysql = require('mysql');
//建立连接的方法
function __connection(){
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'stuData'
});
connection.connect();
return connection;
}
exports.query=function(sql,parmas=null){
//1.获取数据库连接对象
var connection=__connection();
return new Promise(function(reject,resolve){
//2执行sql语句
connection.query(sql,parmas, function (error, results, fields) {
if (error) throw error;
reject(results);
});
//3关闭连接
connection.end();
})
}
//这样就可以直接引入了
const DB = require('./mysqlDB'); //引入上面封装的方法
DB(sql); //参数为要用的sql语句
复制代码
Koa2获取mysql数据,实现接口
//主要用koa-router实现
const Koa = require('koa');
const Router = require('koa-router');
const mysql = require('mysql');
const DB = require('./mysqlDB'); //封装好的引入mysql方法
const app = new Koa();
const router = new Router();
router.get('/stuData', async (ctx, next) => {
const result = await DB.query('select * from t_user'); //查询数据库
console.log(result);
ctx.set('Access-Control-Allow-Origin', 'http://localhost:3000'); //配置跨域资源共享
ctx.set('Access-Control-Allow-Credentials', 'true');
ctx.body = result;
})
app.use(router.routes());
app.use(router.allowedMethods());
app.listen(3001, () => {
console.log('starting ar port 3001');
});
复制代码
封装fetch获取接口数据的方法
import 'whatwg-fetch';
import 'es6-promise';
//封装Api方法,调用时直接Api.GET(url, cbs);
const Api = {
GET(url, cbs) {
url = `http://localhost:3001${url}`;
var result = fetch(url, {
credentials: 'include',
headers: {
'Accept': 'application/json, text/plain, */*'
}
});
result.then(res => {
console.log(res);
return res.json();
}).then(json => {
console.log(json);
cbs(json); //数据请求成功后执行回调函数
return json;
})
return result;
},
POST(url) {
//api/post 提交数据
var result = fetch(url, {
method: 'POST',
credentials: 'include',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded',
},
//注意修改post时的参数形式
body: 'a=100&b=200'
});
result.then(res => {
return res;
}).then(json => {
console.log(json);
})
}
}
export default Api;
复制代码
获取数据
import Api from '../../fetch/index';
this.getData('/stuData');
const cbs = function(data) {
console.log(data); //data为获取接口成功后的数据
}
Api.GET('/stuData', cbs);
复制代码