超簡単Node.jsでPlanetScale(サーバレスDB)入門
Node.js(express利用)で超簡単にPlanetScale(サーバレスDB)入門
1. GitHubアカウント作成
2. PlanetScaleアカウント作成(GitHubアカウント利用)
3. コマンドラインツール(pscale)インストール(mac)
windows、linux等はこちらへ
$ brew install planetscale/tap/pscale
$ brew install mysql-client
4. データベース設定
ログイン
$ pscale auth login
データベース作成
$ pscale database create pscale-node
テーブル作成
$ pscale shell pscale-node main
pscale-node/main> CREATE TABLE `users` (
-> `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> `email` varchar(255) NOT NULL,
-> `first_name` varchar(255),
-> `last_name` varchar(255)
-> );
pscale-node/main> INSERT INTO `users` (id, email, first_name, last_name)
-> VALUES (1, 'hp@example.com', 'Harry', 'Potter');
pscale-node/main> select * from users;
+----+----------------+------------+-----------+
| id | email | first_name | last_name |
+----+----------------+------------+-----------+
| 1 | hp@example.com | Harry | Potter |
+----+----------------+------------+-----------+
5. ファイル作成
$ mkdir pscale-node
$ cd pscale-node
$ npm init
$ npm i express mysql2 dotenv
pscale-node/app.py
require('dotenv').config();
const express = require('express')
const app = express()
const port = process.env.PORT || 3000
const mysql = require('mysql2')
const connection = mysql.createConnection(process.env.DATABASE_URL);
connection.connect()
app.get('/', (req, res) => {
connection.query('SELECT * FROM users', function (err, rows, fields) {
if (err) throw err
res.send(rows)
})
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
6. 実行(設定ファイル無し)
$ pscale connect pscale-node main --execute 'node app.js'
7. 実行(設定ファイル有り)
パスワード作成コマンドからの情報を.envファイルに設定し実行
$ pscale password create pscale-node main <PASSWORD_NAME>
NAME USERNAME ACCESS HOST URL ROLE PASSWORD
--------------------- -------------- ----------------------------------- ------------------ -------------------------------------------------------
production-password xxxxxxxxxxxxx xxxxxx.us-east-2.psdb.cloud Can Read & Write pscale_pw_xxxxxxx
pscale-node/.env
DATABASE_URL=mysql://<USERNAME>:<PLAIN_TEXT_PASSWORD>@<ACCESS_HOST_URL>/<DATABASE_NAME>?ssl={"rejectUnauthorized":true}
$ node app.js
8. URL確認
以上、超簡単!