node连接mysql数据库

1、安装 mysql 模块

npm install mysql --save

2、使用

2-1 创建数据库回话

const mysql = require('mysql');
const connection = mysql.createConnection({
    host: 'localhost', //数据库地址
    user: 'root', //数据库用户
    password: '123456', //数据库密码
    database: 'my-database',  //选中数据库
})

// 执行 sql 脚本对数据库进行读写
connection.query('SELECT * FROM my_table', (err, results, fields) => {
    if(err){
        throw err
    }
    // 结束会话
    connection.release()
})

注意:一个事件就有一个从开始到结束的过程,数据库会话操作执行完后,就需要关闭掉,以免占用连接资源.

2-2 创建数据连接池

一般情况下操作数据库是很复杂的读写过程,不只是一个会话,如果直接用会话操作,就需要每次会话都要配置连接参数。所以这时候就需要连接池管理会话.

const mysql = require('mysql');
// 创建数据池
const pool = mysql.createPool({
    host: 'localhost', //数据库地址
    user: 'root', //数据库用户
    password: '123456', //数据库密码
    database: 'my-database',  //选中数据库
});
// 在数据池中进行会话操作
pool.getConnection(function(err, connection){
    connection.query('SELECT * FROM my_table', (error, results, fields) => {
        if(error){
            throw error
        }
        connection.release();
    })
})

使用Promise连接

const mysql = require('mysql');
// 创建数据池
const pool = mysql.createPool({
    host: 'localhost', //数据库地址
    user: 'root', //数据库用户
    password: '123456', //数据库密码
    database: 'my-database',  //选中数据库
});
/**
 * @param {*} sql 对应的数据库操作
 * @param {*} value 对应的字段(数组)
 */
let query = function(sql,value){
    return new Promise((resolve,reject) => {
        pool.getConnection(function(err, connection){
            if(err){
                reject(err);
            }else{
                connection.query(sql, value, (error, rows) => {
                    if(error){
                        reject(err);
                    }else{
                        resolve(rows);
                    }
                    connection.release();
                })
            }
        })
    })
}
// 例:
let updatePost = function(values){
    let _sql = `update posts set title=?,content=? where id=?`
    return query(_sql,values)
}
router.post('/posts/:postId/edit', async(ctx, next) => {
    let title = ctx.request.body.title,
        content = ctx.request.body.content,
        id = ctx.session.id;
    await updatePost([title, content, id])
        .then(() => {
            ctx.body = true
        }).catch(() => {
            ctx.body = false
        })
}) 

猜你喜欢

转载自blog.csdn.net/qq_39910762/article/details/84524892