Help us understand the problem. What is going on with this article?

[Heroku Postgres] Herokuを使って無料でデータベースを利用する

はじめに🎄

メリークリスマス!!!!🎄🎄
クリスマスいかがお過ごしでしょうか??🎅
ふっけです。今回はNitKitアドベントカレンダーということで、高専祭のクラス展示で入退場システムを作成したときにHerokuのPostgresSQLを使用したので、その方法について書きます。

環境🎄

Node.js v12.8.0

データベースの導入🎄

Herokuでのプロジェクトの作成は省略します。
Herokuでプロジェクトを作成したあとResourcesのAdd-onsからHeroku Postgresを追加します。
スクリーンショット 2019-12-24 15.20.29.png
追加後 Heroku Postgresのリンクから管理画面に飛ぶことができます。
スクリーンショット 2019-12-24 15.28.10.png

データベースへのアクセス🎄

先程作成したデータベースにターミナルから接続します。
データベースの管理画面の Settings > Database Credentials > View Credentials のHeroku CLIをコピーして実行します。
すると以下のように接続することができます。接続ができればテーブルの作成等を行えます。
スクリーンショット 2019-12-24 20.58.35.png

PostgreSQLの基本的なコマンド
https://qiita.com/H-A-L/items/fe8cb0e0ee0041ff3ceb

プログラムの作成🎄

PostgresSQLへの接続のために使用するモジュールを追加します。

yarn add pg

接続用クラスファイルを作成します。

database.js
import Pool from 'pg'
module.exports = class DB {
  constructor() {
    this.pool = new Pool({
      connectionString: DATABASE_URI,
      ssl: true,
    )}
  }
  async query(param) {
    const client = await this.pool.connect()
    const { row } = await client.query(param)
    client.release()
    return row
  }
}

Expressでサーバを立てます。

yarn add express
index.js
import express from 'express'
import database from './database'
const app = express()
const PORT = process.env.PORT || 3000
app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*")
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
    next()
})

// jsonを扱えるようにする
app.use(express.json())
app.use(express.urlencoded({
    extended: true
}))

const db = new database
// メイン処理
api.get('/', async (req, res) => {
  const result = await db.query(SQL)
  return res.status(200).send(result).end()
})

app.listen(PORT)
console.log(`Server running at ${PORT}`)

このような感じでqueryにSQL文を渡すと結果が帰ってくるAPIサーバを作ることができます。

デプロイ🎄

GitHubのリポジトリと連携させると簡単にデプロイすることができます。
またデータベースのURIなどをHerokuの環境変数にしましょう。

heroku 初級編 - GitHub から deploy してみよう -
https://qiita.com/sho7650/items/ebd87c5dc2c4c7abb8f0

監視🎄

Heroku PostgresではDataclipsという機能でデータベースの中身を見ることができます。この機能とても便利です。
スクリーンショット 2019-12-24 21.18.37.png

最後に🎄

Herokuを使うと無料でデプロイからデータベースの利用までできるのでおすすめです。
ぜひ使ってみてください。

実際に使用したリポジトリ
https://github.com/FukeKazki/3i-entry-exit-server
入退場システムについてのブログ
https://bit.ly/35RHPDm

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away