准备:$ npm install mysql --save
// or yarn add mysql
封装query函数:
为了方便,我们使用连接池进行连接,而不是创建连接(createConnection),如果是创建连接,就会在每次使用sql语句时进行数据库连接,效率低下。
query函数即是我们封装好的mysql查询函数,这里返回一个原生Promise,当Promise对象的状态从“未完成”变为“成功”,在异步操作成功时调用,即连接池创建连接成功,如果发生错误,使用reject函数,将Promise对象的状态从“未完成”变为“失败”,在异步操作失败时调用,并将连接失败信息报出的错误,作为参数传递出去。
紧接着,如果成功创建连接,使用Node-MySQL原生提供的query()方法,这里接受三个参数,第一个参数sql为查询语句,第二个参数values为占位的值,当sql语句中有?时使用[values]代替,第三个参数为回调函数,如果查询成功,回调函数参数rows即为结果,失败,err为结果。我们就可以分别用resolve函数和reject函数进行接收。
最后将封装好的query函数抛出即可
db.jsconst mysql = require('mysql') //引入mysql
const pool = mysql.createPool({
host:'localhost',
user:'root', //mysql账号名
password:'13579asd', //密码
database:'blogv2', //你的数据库名
port:'3306'
})
function query(sql,values){
return new Promise((resolve,reject) => {
pool.getConnection((err,connection) => {
if(err) reject(err)
connection.query(sql,values,(err,rows) => {
if(err) reject(err)
resolve(rows)
connection.release() //释放连接,否则会卡顿
})
})
})
}
module.exports = query //抛出
使用:
直接使用立即执行函数,使用try...catch语句进行错误处理,由于query函数返回的是Promise,所以我们直接用await进行接收即可得到相应结果。//引入
const query = require('db')
(async () => {
try {
let blogs = await query('') //你的sql语句
} catch (error) {
console.log(error)
}
})()
参考资料: