20
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Node.jsのMySQLでAsync/Awaitする方法

Node.jsのMySQLでAsync/Awaitする方法の日本語記事が見当たらなくて苦戦したので備忘録として残しておきます。

以下のように書けばAsync/Awaitがちゃんと効きます。

hoge.js
var mysql = require('mysql');
const util = require('util');
var pool = mysql.createPool({
  connectionLimit: 10,
  host: 'hoge',
  user: 'hoge',
  password: 'hoge',
  database: 'hoge',
})
pool.query = util.promisify(pool.query) // この行がポイント!
try {
  var results = await pool.query('SELECT * FROM myDB')
  pool.end(); // mysqlのコネクションのプロセスを終了させる。(2018-11-07追記)
} catch (err) {
  throw new Error(err)
}
console.log(results)

ちなみにpool.query()はpool.getConnection() + connection.query() + connection.release()のショートカットらしいです。

ではでは。

参考記事
Create a MySQL Database Middleware with Node.js 8 and Async/Await

(2018-11-07追記)
すみません、pool.end();がないとプロセスが終了しないということで追記しました。
@saoshi さん、ありがとうございました。
参考:Node.jsのMySQLでAsync/Awaitしたらプロセスが終わらない

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
20
Help us understand the problem. What are the problem?