前言:
egg中配合使用mysql来实现数据的获取和写入,并通过egg定义的方式发送到接口里面。
目录:
3、配置插件:打开config/config.default
1、路由中加入, router.js或者router.local.js
select * from user sql查询语句 ,获取user表的所有数据
3、页面上打开 http://localhost:7001/getUserList
1、路由中加入, router.js或者router.local.js
let insertResult = await this.app.mysql.insert( 'user', { 你的表里对应的字段 } );
4、postman中请求:http://localhost:7001/postUserList
官方入口(egg+mysql):点我
一、项目中安装mysql
1、安装:
cnpm i --save egg-mysql
2、配置插件:打开config/plugin.js
// mysql配置
exports.mysql = {
enable: true,
package: 'egg-mysql',
};
3、配置插件:打开config/config.default
// 配置MySQL数据库的连接
exports.mysql = {
client: {
// ip地址,本机就localhost
host: 'localhost',
// 端口-默认都是这个
port: '3306',
// 账号
user: 'root',
// 密码
password: '123456',
// 表名称
database: 'xing'
},
// load into app, default is open
app: true,
// load into agent, default is close
agent: false,
};
4、使用方式:具体使用看下面
await app.mysql.query(sql, values); // 单实例可以直接通过 app.mysql 访问 |
二、页面上定义get请求接收mysql的数据
1、路由中加入, router.js或者router.local.js
app.get('/getUserList', controller.new.user.getUserList);
2、user.js中定义 getUserList 方法,
select * from user sql查询语句 ,获取user表的所有数据
/**
* 用户信息路由
* @param app
* @returns {HomeController}
*/
const Controller = require('egg').Controller;
class NewsController extends Controller {
async getUserList() {
//查询库里的user表
let userList= await this.app.mysql.query(
'select * from user'
);
console.log(this.ctx.query);//获取路径后面的参数
this.ctx.body = {
code:200,
masg:'success',
data:userList
};
}
}
module.exports = NewsController;
3、页面上打开 http://localhost:7001/getUserList
三、页面上定义post请求新增mysql的数据
1、路由中加入, router.js或者router.local.js
app.post('/postUserList', controller.new.user.postUserList);
2、user.js中定义 postUserList方法,
sql语句:
let insertResult = await this.app.mysql.insert(
'user', { 你的表里对应的字段 }
);
/**
* 用户信息路由
* @param app
* @returns {HomeController}
*/
const Controller = require('egg').Controller;
class NewsController extends Controller {
async postUserList() {
//新增数据-user表
let data = {
name:'张三',
id:parseInt(Math.random()*100000),
age:'34',
address:'地址',
email:'34',
phone:'13519102731'
}
let insertResult = await this.app.mysql.insert(
'user', data
);
this.ctx.body = {
code:200,
masg:'success',
data:insertResult
};
}
}
module.exports = NewsController;
3、如果报错missing csrf token ,点我
4、postman中请求:http://localhost:7001/postUserList
四:jsonp请求(摘取)
//app/router.js
module.exports = app => {
const { router, controller } = app;
router.get('/',controller.home.index);
router.get('/list',controller.news.list);
router.post('/form',controller.form.post);
router.get('/demo/count.json',app.jsonp(),controller.demo.count);
}
// app/demo/count.json
{
"errcode":"0",
"msg":"success",
"data":[
{
"id":1,
"title":"hello"
},
{
"id":2,
"title":"world"
}
]
}
// app/controller/demo.js
const Controller = require('egg').Controller;
class DemoJsonp extends Controller{
async count(){
this.ctx.body = {
data:[
{
"id":1,
"title":"hello"
},
{
"id":2,
"title":"world"
}
]
};
}
}
module.exports = DemoJsonp;
其实我们这里并没有跨域,只是类比一下,跟get其实一样。
更多资料:操作数据库(摘取)
'use strict';
const Controller = require('egg').Controller;
class UserController extends Controller {
async index() {
// 1.查询一条数据,不管条件是什么,只能查一条
let getResult = await this.app.mysql.get(
'user', { "id": 3 }
);
// 2.查询多条数据
let selectResult = await this.app.mysql.select(
'user', { limit: 10, orders: [['id', 'desc']] }
);
// 3.通过SQL语句查询数据
let queryResult= await this.app.mysql.query(
'select * from user'
);
// 4.通过SQL语句查询数据,查询条件为用户ID
let user_id=3;
let queryResultById= await this.app.mysql.query(
'select * from user where id=?',[user_id]
);
// 5.增加数据
let insertResult = await this.app.mysql.insert(
'user', { username: 'admin', 'password': '123456' }
);
// 6.根据主键修改数据
let userInfo = {
id: 24,
username: '二麻子'
};
let updateResultById = await this.app.mysql.update('user', userInfo);
// 7.执行SQL语句来修改数据,条件为密码等于666666
let updateResultBySQL= await this.app.mysql.query(
'update user set username=? where password=?',['李四','666666']
);
// 8. 按指定的用户ID删除数据
let deleteResult = await this.app.mysql.delete(
'user', {id: '25'}
);
this.ctx.body = '操作成功';
}
}
module.exports = UserController;