1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

サーバレスDB(Postgresql : NeonDB ) の無料版にCloudflare Workers ( Node.js) から繋いだメモ

Last updated at Posted at 2024-12-27

概要

Cloudflare Workers から NeonDBにつないでみた。

Cloudflare Workersを作成するまでは 「Cloudflare Workers プロジェクト作成から GitHub Actions 自動デプロイまで最速でやる」を参考にした。( issue , commit )
Honoの導入は「Cloudflare Workers with Hono on bun を試す」を参考にした。( commit )

ソースコード

Neonの設定

1年前とGUIが変わっている。

ロールの準備

「Branches」を選択し、対象をクリックする。

image.png

「Roles & Databases」のタブを選択

image.png
「Add role」ボタンをクリック

image.png

ロール名を入力
image.png

「Download .env」ボタンを押下し、作成されたパスワードを控えておく。
image.png

ダウンロードされる.env.txtの内容は下記

PGUSER=入力したロール名
PGPASSWORD=出力されたパスワード

環境変数を Cloudflare works に設定しておく。下記コマンドを入れると入力を促されるので、postgresql://入力したロール名:出力されたパスワード@fuga.us-west-2.aws.neon.tech/main?sslmode=requireを設定。

wrangler secret put NEON_CONNECTION_STRING
$ wrangler secret put NEON_CONNECTION_STRING

 ⛅️ wrangler 3.99.0
-------------------

√ Enter a secret value: ... ********************************************************************************************************
🌀 Creating the secret for the Worker "odyssage-backend"
✨ Success! Uploaded secret NEON_CONNECTION_STRING

ソースコード

DBから値を取り出すだけのテスト関数を作って確認。

apps/backend/src/index.ts
import { Hono } from 'hono';
import { neon } from '@neondatabase/serverless';

const app = new Hono<{ Bindings: { NEON_CONNECTION_STRING: string } }>();

app.get('/', (c) => c.text('Hello Cloudflare Workers!'));
app.get('/characters', async (c) => {
	const sql = neon(c.env.NEON_CONNECTION_STRING);
	const data = await sql('SELECT * FROM public.character');

	return c.json(data);
});

export default app;

確認(2025.01.05更新)

(2025.01.02更新)
下記のキャラクターのAPIは削除した。
https://odyssage-backend.hibohiboo66-cloudflare.workers.dev/characters

DBの値を確認できた。

[{"id":"test1","name":"foo"}]

drizzleを導入し、シナリオのAPIで動作確認した。
https://odyssage-backend.hibohiboo66-cloudflare.workers.dev/scenarios

(2025.01.05更新)
また、OpenAPIを公開した。
Hono OpenAPIがESMに対応しておらず、テストが失敗したため、OpenAPIの公開をHonoで行うことはいったんあきらめた。redocで普通に作成

https://odyssage-backend.hibohiboo66-cloudflare.workers.dev/docs

この時点のソースコード

ローカルで実行する 2025.01.05 追記

Neon(Postgres)のDockerをローカルで稼働させ、Drizzleを使ったマイグレーションとCloudflare Workersのローカル実行からの接続を行ったメモに記載

参考

Neon - roles
Cloudflare Workers の wrangler.toml に環境変数を書かないで管理する
【個人開発】無料DBを求めてPlanetScaleからNeonに移行したら快適だった話

Hono - OpenAPI

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?