【Node.js入門】PostgreSQLに接続してデータを操作するためのチュートリアル!

今回は、Node.jsからPostgreSQLのデータベースに接続してデータを操作するための手法について学習していきましょう!

「PostgreSQLってどんなデータベースなの?」
「Node.jsからデータベースを操作する方法を知りたい」
「PostgreSQLのクエリを操作する手法を学びたい」

このような内容も含めて、本記事では以下のような構成で解説していきます!

【基礎】「PostgreSQL」とは?
【基礎】「PostgreSQL」の使い方
【実践】Node.jsからクエリを操作する方法
【まとめ】PostgreSQLの使い方まとめ

この記事で、PostgreSQLをしっかり学習してスキルアップを目指していきましょう!

>>> 今すぐ「PostgreSQLの使い方」を知りたい方はこちら

「PostgreSQL」とは?

PostgreSQLは、オープンソースで開発・公開されているデータベースの名称であり、リレーショナルデータベースの代表的な製品とも言えます。
(オブジェクトリレーショナルデータベースとも言われます)

Webシステムでもよく使われるデータベースとして「MySQL」もありますが、PostgreSQLも同じように利用できてさらに多機能でもあるのが特徴でしょう。

MySQLについては次の記事で詳しくまとめているので合わせて参考にしてみてください。

【Node.js入門】MySQLを使ったデータベース操作方法まとめ!
更新日 : 2021年7月1日

PostgreSQLは主にUNIX環境で使われていますが、一般的なWindows / Mac OS X / Linuxなどでも同様に使えます。

Node.jsによるPostgreSQLの使い方

この章では、Node.jsからPostgreSQLを操作するための導入方法について見ていきましょう!

主に、モジュールの追加やPostgreSQLへの接続方法について学んでいきます。

node-postgresモジュールの導入

まずは、Node.jsからPostgreSQLを扱うためのモジュールの導入方法から見ていきましょう!

一般的にPostgreSQLを扱うには「node-postgres」モジュールを使うので、次のようにコマンドを実行してインストールします。

$ npm install pg

インストールできたら、Node.jsから扱えるようにrequire()を記述しておきましょう!

var { Client } = require('pg');

これで、Node.jsからPostgreSQLを扱うための準備が完了しました。

Node.jsからPostgreSQLに接続する方法

それでは、Node.jsからPostgreSQLのデータベースに接続する方法を見ていきましょう!

必要な情報としては次の通りです。

・ユーザー名
・データベースアドレス(ホスト)
・データベース名
・パスワード
・ポート番号

いずれの情報もPostgreSQLを使ってデータベースを設定する時に作るものなので、忘れずにメモをしておきましょう。

これらの情報を元に次のような記述を行うことでNode.jsからPostgreSQLに接続することができます。

var client = new Client({
    user: 'myuser',
    host: 'database.server.com',
    database: 'mydata',
    password: 'abc123',
    port: 5432
})

client.connect()

Client()のインスタンスを作成する際に、初期設定としてオプションにデータベースと接続するための必要な情報を指定します。

以降は「client」を使ってさまざまなデータベース操作を行うので、「connect()」メソッドを実行するのを忘れないようにしましょう!

PostgreSQLのクエリ操作

この章では、データベースを操作するためのクエリを実行する方法について見ていきましょう!

主に、コールバック関数・Promiseを活用した実行方法について学んでいきます。

今回利用するクエリは次のようにオブジェクト形式にしておくと扱いやすいでしょう。

const query = {
    text: 'INSERT INTO users(name, email) VALUES($1, $2)',
    values: ['太郎', '[email protected]'],
}

この例では、ユーザー情報を新規にデータベースへ追加しています。

このクエリを使って、次の章からプログラミング手法を見ていきましょう!

callbackによるクエリ操作

まずは、最も定番とも言えるコールバック関数を使ったクエリ操作について見ていきましょう!

「query()」の引数へオブジェクトに格納したクエリ操作と関数を設定していきます。

client.query(query, (err, res) => {
    if (err) {

        console.log(err.stack)

    } else {

        console.log(res.rows[0])

    }
})

第1引数にクエリオブジェクトを設定し、第2引数にコールバック関数を設定しています。

関数内の処理としては、クエリ操作に失敗した時と正常に実行された時の処理を条件分岐しています。

クエリが正常に動作すると、オブジェクトに格納されたユーザー名とメールアドレスが出力されます。

Promiseによるクエリ操作

次に、シンプルな記述が可能なPromiseを使ったクエリ操作について見ていきましょう!

Promiseの特徴である「then()」「catch()」による記述が可能なので、コードの見通しが良くなり処理の連結もしやすいです。

次のサンプル例を見てください!

client.query(query)
  .then(res => console.log(res.rows[0]))
  .catch(e => console.error(e.stack))

コールバック関数を使ったコードよりもずっとシンプルになったのが分かるでしょうか?

何らかのエラーが発生した場合には自動的に「catch()」の処理が実行され、通常は「then()」の処理が実行されるようになります。

PostgreSQLの使い方まとめ

最後に、Node.jsからPostgreSQLを操作するための手法についてまとめておきます!

まずは、Node.jsからPostgreSQLのデータベースを扱うために「node-progres」モジュールを使えるようにrequire()しておきます。

var { Client } = require('pg');

データベースを操作するために必要な情報をClient()の引数に初期設定として指定します。

var client = new Client({
    user: 'myuser',
    host: 'database.server.com',
    database: 'mydata',
    password: 'abc123',
    port: 5432
})

client.connect()

そして、利用したいクエリ操作を次のようにオブジェクト形式に格納しておくと便利です。

const query = {
    text: 'INSERT INTO users(name, email) VALUES($1, $2)',
    values: ['太郎', '[email protected]'],
}

このクエリをNode.jsから利用するには、query()メソッドにオブジェクトを指定すればOKです。

client.query(query)
  .then(res => console.log(res.rows[0]))
  .catch(e => console.error(e.stack))

Promiseによるシンプルな記述が可能で、何らかのエラーが発生した場合にはcatch()が自動的に実行されます。

まとめ

今回は、Node.jsからPostgreSQLデータベースに接続して操作するための手法について学習しました!

最後に、もう一度ポイントをおさらいしておきましょう!

・Node.jsからPostgreSQLを操作するには「node-postgres」モジュールを導入する
・データベース情報をClient()の引数に初期設定として指定する必要がある
・クエリ操作としてはコールバック関数かPromiseによる記述がある

上記内容を踏まえて、ぜひ自分でもプログラミングに取り入れて活用できるように頑張りましょう!

Writer

マサト

フリーランス

フリーランスのIT系ライターを10年従事する兵庫県出身の40歳。侍ブログ編集部としては、これまで270記事以上を執筆。
30歳を過ぎてから独学でJavaScript, Node.js, Linuxを習得した経験を活かし、初心者が迷わない記事作成を意識しながらプログラミングの楽しさを知ってもらうために活動しています。趣味はキャンプと登山です。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI ENGINEER Plus

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら