node下使用mysql包操作数据库

本文介绍如何使用Node.js连接MySQL数据库,并通过实例演示了创建连接、执行查询、使用连接池等基本操作,还提供了适用于Koa2框架的Promise封装。

先引入mysql

cnpm install mysql --save
const mysql = require('mysql')
复制代码

一个连接

// create a new connection 
let conn = mysql.createConnection({
    host:'localhost',
    user:'wwl',
    password:'123',
    database:'test'
})
// sql query string
let _sql = 'select * from tb_test'
conn.query(_sql, (err,result,field) => {
    if(err) throw(err)
    console.log(result)
    //close connection
    conn.end()
})
复制代码

新建连接池

//create a connection pool
let pool = mysql.createPool({
    host:'localhost',
    user:'wwl',
    password:'123',
    database:'test'
})
// get a connection from the pool
pool.getConnection( (err,conn) =>{
  if(err) console.log(err)
  //query string
  let _sql = 'select * from tb_test '
  conn.query(_sql,(err,result,field) => {
      if(err) console.log(err)
      console.log(result)
      //delete the connection   you can also use conn.release() to give it back
      conn.destroy()
  })
})
//close all connections
pool.end( (err) => {})
复制代码

封装成Promise供Koa2使用

function createPromiseMysqlConnection(){
    return new Promise( (res,rej) => {
        // create a new connection 
        let conn = mysql.createConnection({
            host: 'localhost',
            user: 'wwl',
            password: '123',
            database: 'test'
        })
        // sql query string
        let _sql = 'select * from tb_test'
        conn.query(_sql, (err, result, field) => {
            if (err) rej(err)
            res(result)
            //close connection
            conn.end()
        })
      })
    }
复制代码

再贴一个模块版

const mysql = require('mysql')


function mysqlOperator(){

}

mysqlOperator.prototype = {
    constructor:mysqlOperator,
    init,
    query,
    releaseConnection,
    destroyConnection,
    endPool
}
// init
function init(opt){
    return new Promise( (res,rej) => {
        this.pool = mysql.createPool(opt)
        this.pool.getConnection((err, connection) => {
            if (err) rej(err)
            this.connection = connection
            res()
        })
    })   
}

// query
function query(sql){
    return new Promise( (res,rej) => {
        this.connection.query(sql, (err, result, field) => {
            if (err) rej(err)
            res({ result, field })
        })
    })
}

// release connection
function releaseConnection(){
    this.connection.release()
}

//destroy connection
function destroyConnection(){
    this.connection.destroy()
}

//end pool
function endPool(){
    this.pool.end( (err) => console.log(err))
}

module.exports = mysqlOperator
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值