node.js PostgreSQLにselectをasync/awaitで実行する

node.js PostgreSQLにselectをasync/awaitで実行する

node.jsのライブラリ「pg」でPostgreSQLにselectをasync/awaitで実行するサンプルコードを記述してます。nodeのバージョンは14.15.1となります。

環境

  • OS  Ubuntu 20.10
  • node V14.15.1
  • npm 6.14.9
  • PostgreSQL 13.1

pgインストール

pgを使用して、接続するので、npmでインストールしておきます。

npm i pg

async/awaitで実行

事前に「sample」データベースの「numbers」テーブルにデータを挿入しておきます。

INSERT INTO numbers (id, name) VALUES (1,'mebee')
INSERT INTO numbers (id, name) VALUES (2,'info')

以下は、thenを使用して、「numbers」テーブルのデータをselectを実行してデータを取得するサンプルコードとなります。

const { Client } = require('pg')

const pg = new Client({
    user: 'mebee',
    host: '0.0.0.0',
    database: 'sample',
    password: 'password',
    port: 5432,
})

const query = {
    name: 'hoge',
    text: 'SELECT * FROM numbers'
}

pg.connect()
.then(() => console.log("接続完了"))
.then(() => pg.query(query))
.then(result => console.table(result.rows))
.catch((err => console.log(err)))
.finally((() => pg.end()))

これをasync/awaitを使用して記述すると、以下のコードになります。

const { Client } = require('pg')

const pg = new Client({
    user: 'mebee',
    host: '0.0.0.0',
    database: 'sample',
    password: 'password',
    port: 5432,
})

const sample = async () => {
    try {
      await pg.connect()
      console.log('接続完了')
      const results = await pg.query("select * from numbers")
      console.table(results.rows)        
    }
    catch (e) {
      console.log(e)
    }
     finally {
       await pg.end()
     }
  }
  
  sample()

実行結果

接続完了
┌─────────┬────┬─────────┐
│ (index) │ id │  name   │
├─────────┼────┼─────────┤
│    0    │ 1  │ 'mebee' │
│    1    │ 2  │ 'info'  │
└─────────┴────┴─────────┘