herokuのPostgresSQLをNode.jsで触る方法
herokuのPostgreSQLを使ってデータの保存読み込みを行ったのでメモ。
最後はNode.jsで書いてますが、途中までは他の言語でも参考になるはずです。
一連の流れの説明がなかったので残しておきます。
やりたいことは、
heroku のアプリにデータベース(PostgreSQL)を追加
⬇︎
コマンドからPostgreSQLにテーブルを追加して適当な値を格納する。
⬇︎
Node.jsからデータベースにアクセスして、PostgreSQL内のデータを触って見る。
という流れです。herokuにはアプリ登録していてPostgreSQLは追加していないところからスタートします。
- heroku アプリにデータベースを追加
herokuのアプリ画面でResources>Add-onsの入力欄に、
heroku Postgresと入力して検索。そのまま、フリープランでAdd-onします。
以下の画面。
すると、Settings > Config Variables のところにデータベースのURLが表示されます。
これでデータベースを追加は完了。楽チン!
- PostgreSQLにテーブルを追加
次にデータベースにテーブルを作成します。
おそらくGUIはないと思うのでコマンドからテーブル作成を行います。
まずはPostgresのコマンドが動くようにローカルにPostgresをインストールしておく必要があります。
次にherokuのPostgresにアクセスできるようにします。
$ heroku pg:psql
これでデータベースを編集できるモードになりました。
次にテーブルを作成していきます。
::DATABASE=> CREATE TABLE users ::DATABASE-> ( ::DATABASE(> user_id SERIAL, ::DATABASE(> name character varying(100) NOT NULL, ::DATABASE(> date timestamp NOT NULL ::DATABASE(> );
これでusersテーブルができました。以下コマンドでテーブルの構造が確認できます。
::DATABASE-> \d users
- Node.jsからデータベースにアクセス
では、Node.jsのスクリプトでデータベースをいじくります。
と言っても対してことはなくて、データベースのURLだけを指定してあげればよいので、
簡単です。
データベースのURLは以下のコマンドで取得できます。
heroku pg:credentials:url --app アプリ名
取得したらherokuの環境変数として入れてあげます。
$heroku config:set DATABASE_URL=データベースのURL
あとはNode.jsでこの環境変数を使ってデータベースに接続するだけ。
事前にpgをインストールしておきます。
npm install pg
以下のコードが基本形です。ssl通信が必要となるみたいなのでssl: trueを忘れないように。
const { Client } = require('pg'); const client = new Client({ connectionString: process.env.DATABASE_URL, ssl: true, }); client.connect(); client.query('SELECT * FROM users;', (err, res) => { if (err) throw err; for (let row of res.rows) { console.log(JSON.stringify(row)); } client.end(); });
以上です。