はじめに🎄
メリークリスマス!!!!🎄🎄
クリスマスいかがお過ごしでしょうか??🎅
ふっけです。今回はNitKitアドベントカレンダーということで、高専祭のクラス展示で入退場システムを作成したときにHerokuのPostgresSQLを使用したので、その方法について書きます。
環境🎄
Node.js v12.8.0
データベースの導入🎄
Herokuでのプロジェクトの作成は省略します。
Herokuでプロジェクトを作成したあとResourcesのAdd-onsからHeroku Postgresを追加します。
追加後 Heroku Postgresのリンクから管理画面に飛ぶことができます。
データベースへのアクセス🎄
先程作成したデータベースにターミナルから接続します。
データベースの管理画面の Settings > Database Credentials > View Credentials のHeroku CLIをコピーして実行します。
すると以下のように接続することができます。接続ができればテーブルの作成等を行えます。
PostgreSQLの基本的なコマンド
https://qiita.com/H-A-L/items/fe8cb0e0ee0041ff3ceb
プログラムの作成🎄
PostgresSQLへの接続のために使用するモジュールを追加します。
yarn add pg
接続用クラスファイルを作成します。
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
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という機能でデータベースの中身を見ることができます。この機能とても便利です。
最後に🎄
Herokuを使うと無料でデプロイからデータベースの利用までできるのでおすすめです。
ぜひ使ってみてください。
実際に使用したリポジトリ
https://github.com/FukeKazki/3i-entry-exit-server
入退場システムについてのブログ
https://bit.ly/35RHPDm