nodemysql实现异步操作下

7次阅读

共计 1010 个字符,预计需要花费 3 分钟才能阅读完成。

关于上篇文章 node-mysql 实现异步操作(上)介绍了如何进行异步操作,这篇文章就主要介绍如何封装 node-mysql 这个库的基本使用


mysql 库下载

https://github.com/mysqljs/mysql

npm install mysql --save

基本使用

这是来自官方 github 上的例子

// 连接配置
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

// 连接 mysql
connection.connect();

// 数据库操作
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {if (error) throw error;
  console.log('The solution is:', results[0].solution);
});

// 结束连接
connection.end();

例子中可以看出,对是数据库进行操作后,拿到的结果全在回调函数中使用,这很不符合平常的操作。而我们希望的是在回调函数中直接 return 结果,然后用一个变量直接来获取这个结果。

思路

利用 Promise 对象 的 resolve 参数 在回调函数中,我们拿到数据库操作的结果 results,把这个结果 resolve 出去,在 async 函数 中可以把数据从 Promise 对象 中拿出来。

代码实现

const mysql = require('mysql');

const find = async () => {
    const connection = await mysql.createConnection({
        host: '',
        port: '',
        user: '',
        password: '',
        database: '',
    });
    await connection.connect();
    return new Promise((resolve, reject) => {
        connection.query('SELECT * from tablename', 
        (error,results, fields) => {resolve(results);
        })
    })
}

(getData = async () => {console.log(await find())
})()

正文完
 0