2019-04-09 | koa2 | UNLOCK

重拾koa2之数据库_mysql

mysql模块

mysql模块是node操作MySQL的引擎,可以在nodejs环境下对MySQL数据库进行建表,增,删,改,查等操作。

创建数据库会话

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const mysql  = require('mysql')
const connection = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'guilong',
database:'koatest'
})

// 执行sql脚本对数据库进行读写
connection.query('SELECT * FROM my_table',(error,results,fields)=>{
if(error) throw error

connection.release()
})

创建数据连接池

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const mysql = require('mysql')

//创建数据池
const pool = mysql.createPool({
host:'127.0.0.1',
user:'root',
password:'123456',
database:'koatest'
})

//在数据池中进行会话操作
pool.getConnection(function(err,connection){
connection.query('SELECT * FROM my_table',(error,results,fields)=>{
//结束会话
connection.release()
//如果有错误就抛出
if(error) throw error
})
})

async/await封装使用mysql

由于mysql模块的操作都是异步操作,每次操作的结果都是回调函数中执行,现在有了async/await,就可以用同步的写法去操作数据库

Promise封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const mysql = require('mysql')

const pool = mysql.createPool({
host:'127.0.0.1',
user:'root',
password:'123456',
database:'koatest'
})

let query = function(sql,values){
return new Promise((resolve,reject)=>{
pool.getConnection(function(err,connection){
if(err){
reject(err)
}else{
connection.query(sql.values,(err,rows)=>{
if(err){
reject(err)

}else{
resolve(rows)
}
connection.release()
})
}
})
})
}

module.exports = {query}

async/await使用

1
2
3
4
5
6
7
8
9
10
11
12
13
const {query} = require('./asyncsql')
async function selectAllData(){
let sql = 'SELECT * FROM my_table'
let dataList = await query(sql)
return dataList
}

async function getData(){
let dataList =await selectAllData()
console.log(dataList)
}

getData()

项目建表初始化

https://chenshenhai.github.io/koa2-note//note/mysql/init.html

评论加载中