1
1

More than 1 year has passed since last update.

Node.js × Heroku Postgres を試してみる

Posted at

はじめに

Node.jsでRDBSを試してみたいが、有料のDBサーバは使用したくないと思い、Heroku Postgres の無料枠で軽く試してみた際の備忘録になります。
修正点やアドバイスなどありましたらコメントいただけますと幸いです。

バージョン

  • Node : 14.17.1

手順

下記の手順で作成していきます。

  1. Heroku Postgres 作成
  2. Node.jsで設定を行う

1. Heroku Postgres 作成

まずはHerokuでDBを作成していきます。
今回はUI上から作成していきます。(CLIを使用することも可能)

1-1. 新規appの作成

下記画面の「New」から「Create new app」を選択して、新規appを作成します。
https://dashboard.heroku.com/apps
new.png

新規app作成画面で適当なapp名をつけ、「Create app」をクリックします。
create_new_app.png
※ app名はHeroku内で一意である必要がある(他のユーザとも被ってはならない)ので、注意が必要です。

1-2. appに紐づく Heroku Postgres の作成

appの作成が完了したら、そのappに紐づく Heroku Postgres を作成します。

下記app一覧画面から、1-1で作成したappを選択します。
https://dashboard.heroku.com/apps

対象appの画面で、「Resource」タブの「Add-ons」の項目から「Heroku Postgres」を検索・選択します。
add-on.png

新規 Heroku Postgres 作成画面のプランは「Hobby Dev - Free」を選択し、「Submit Order Form」をクリックします。
plan.png

1-3. DBの接続情報の取得

DBの作成が完了したら、接続に必要な情報を取得します。

下記URLから、1-2で作成したDBを選択します。
https://data.heroku.com/

選択後、「Setting」タブの「View Credentials...」から接続情報を参照することができます。
view_credentials.png

2. Node.jsで設定を行う

次に、Node.jsで作成したDBに接続するための設定をしていきます。
以下ではNode.jsのインストールが前提となっておりますので、未インストールの方は公式ページHomebrewなどからインストールをお願いいたします。

2-1. 必要なモジュールのインストール

今回は下記の2つのモジュールを使用します。

  • node-postgres : Node.jsでPostgreSQLを使用するためのモジュール
  • dotenv : .envファイルの値を使用するためのモジュール

下記コマンドでインストールします。

npm install pg
npm install dotenv

2-2. .envファイルの作成

.envファイルを作成し、1-3で取得した接続情報を記述します。
下記の中から必要なものだけ記述してください。

.env
DB_HOST={ Host }
DB_DATBASE={ Database }
DB_USER={ User }
DB_PORT={ Port }
DB_PASS={ Password }
DB_URL={ URI }

2-3. javascriptファイルの作成

実行ファイルを作成します。
DB接続情報の記述方法はこちらを参考にしてください。

sample.js
require('dotenv').config();

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

// DB_URLを使用
const client = new Client({
  connectionString: process.env.DB_URL,
  ssl: {
    rejectUnauthorized: false
  }
});

// 接続
client.connect();

// 現在時刻を取得
client.query('SELECT NOW()', (err, res) => {
  if (err) throw err;
  for (let row of res.rows) {
    console.log(JSON.stringify(row));
  }
  // 接続終了
  client.end();
});

上記例では DB_URL を使用して接続していますが、DB_HOST などを使用して下記のように書くこともできます。

sample.js(一部)
const client = new Client({
  user: process.env.DB_USER,
  host: process.env.DB_HOST,
  database: process.env.DB_DATBASE,
  password: process.env.DB_PASS,
  port: process.env.DB_PORT,
  ssl: {
    rejectUnauthorized: false
  }
});

設定の書き方については下記を参考にしてください。

また、PostgreSQLのクエリに関しては下記を参考にしてください。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1