node.js PostgreSQLに接続する

node.js PostgreSQLに接続する

node.jsのライブラリ「pg」でPostgreSQLに接続するサンプルコードを記述してます。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

データベース接続

「sample」というデータベースに接続して、バージョン情報を取得するだけのサンプルコードとなります。

const { Client } = require('pg')

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

pg.connect()

pg.query('SELECT version()', (err, result) => {
    if (err) throw err;
    console.log(result.rows[0])
    pg.end()
})

実行結果

Result {
  command: 'SELECT',
  rowCount: 1,
  oid: null,
  rows: [
    {
      version: 'PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit'
    }
  ],
  fields: [
    Field {
      name: 'version',
      tableID: 0,
      columnID: 0,
      dataTypeID: 25,
      dataTypeSize: -1,
      dataTypeModifier: -1,
      format: 'text'
    }
  ],
  _parsers: [ [Function: noParse] ],
  _types: TypeOverrides {
    _types: {
      getTypeParser: [Function: getTypeParser],
      setTypeParser: [Function: setTypeParser],
      arrayParser: [Object],
      builtins: [Object]
    },
    text: {},
    binary: {}
  },
  RowCtor: null,
  rowAsArray: false
}

実行結果が全て取得されているので、バージョン情報だけを取得したい場合は、以下のようにします。

console.log(result.rows[0])

<出力結果>
{
  version: 'PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit'
}

また、thenやcatchを使用して、以下のように記述することも可能です。

const { Client } = require('pg')

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

pg.connect()
.then(() => console.log("接続完了"))
.then(() => pg.query("SELECT version()"))
.then(result => console.log(result.rows[0]))
.catch((err => console.log(err)))
.finally((() => pg.end()))