目的
NodejsからHeroku postgresに接続する
手順
- Heroku postgresが追加されているか確認する
コマンドプロンプトから、heroku configを実行する - Heroku postgresが追加されてなければ、追加する
heroku addons:create heroku-postgresql - クライアントにpostgres(pgAdmin)をインストールする
- pgAdminで接続テストしてみる
- NodejsにDBアクセス用のプログラムを作成する
- 問題なく接続できたことを確認
接続時のエラー
Heroku postgresは、ssh接続が必須なのでheroku configで記載されている接続情報で接続しようとするとエラーになります
接続エラーのメッセージ:
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
接続エラー時のプログラムエラー:
var query = client.query('SELECT Name FROM "TestUser"');
^
TypeError: Cannot call method 'query' of null
解決方法:
var conString = process.env.DATABASE_URL || "postgres://[ユーザ名]:[パスワード]@[ホスト名]:[ポート]/[DBメンテナンス]
の後に
?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
を追記する
感想
コマンドを実行するだけで簡単にpostgresとの連携ができました
また、Heroku postgresの無料版を選択するとマルチテナントなので、別ユーザのスキーマが見れるのは新鮮でした