node-mysql實現異步操做(下)

關於上篇文章 node-mysql實現異步操做(上)介紹瞭如何進行異步操做,這篇文章就主要介紹如何封裝node-mysql這個庫的基本使用

mysql庫下載

https://github.com/mysqljs/mysqlnode

npm install mysql --save

基本使用

這是來自官方github上的例子mysql

// 鏈接配置
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結果,而後用一個變量直接來獲取這個結果。git

思路

利用 Promise對象 的 resolve參數 在回調函數中,咱們拿到數據庫操做的結果 results,把這個結果 resolve 出去,在 async函數 中能夠把數據從 Promise對象 中拿出來。github

代碼實現

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())
})()
相關文章
相關標籤/搜索