41
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NitKit コンピュータ研究部Advent Calendar 2019

Day 25

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

Last updated at Posted at 2019-12-24

はじめに🎄

メリークリスマス!!!!🎄🎄
クリスマスいかがお過ごしでしょうか??🎅
ふっけです。今回は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

41
34
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
41
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?