Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Hono から D1 をクエリする

Hono ウェブフレームワークから D1 をクエリする

最終更新 Markdown で表示Agent セットアップ

Hono は API ファーストのアプリケーション向けの高速なウェブフレームワークで、WorkersPages の両方を最初からサポートしています。

Workers を使う場合:

Pages Functions を使っている場合:

  1. D1 データベースを Pages Function にバインドします。
  2. ローカル開発では wrangler dev--d1 BINDING_NAME=DATABASE_ID フラグを渡します。BINDING_NAME はコード内の呼び出し名と一致させ、DATABASE_ID は Wrangler 設定ファイルの database_id と一致させます。例: --d1 DB=xxxx-xxxx-xxxx-xxxx-xxxx
  3. Cloudflare Pages 向けの Hono ガイドを参照してください。

次の例は、DB にバインドした D1 データベースへ、Workers スクリプトと Pages Function の両方からアクセスする方法を示します。

import { Hono } from "hono";

// This ensures c.env.DB is correctly typed
type Bindings = {
	DB: D1Database;
};

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

// Accessing D1 is via the c.env.YOUR_BINDING property
app.get("/query/users/:id", async (c) => {
	const userId = c.req.param("id");
	try {
		let { results } = await c.env.DB.prepare(
			"SELECT * FROM users WHERE user_id = ?",
		)
			.bind(userId)
			.run();
		return c.json(results);
	} catch (e) {
		return c.json({ err: "Failed to query user" }, 500);
	}
});

// Export our Hono app: Hono automatically exports a
// Workers 'fetch' handler for you
export default app;
import { Hono } from "hono";
import { handle } from "hono/cloudflare-pages";

// This ensures c.env.DB is correctly typed
type Bindings = {
	DB: D1Database;
};

const app = new Hono<{ Bindings: Bindings }>().basePath("/api");

// Accessing D1 is via the c.env.YOUR_BINDING property
app.get("/query/users/:id", async (c) => {
	const userId = c.req.param("id");
	try {
		let { results } = await c.env.DB.prepare(
			"SELECT * FROM users WHERE user_id = ?",
		)
			.bind(userId)
			.run();
		return c.json(results);
	} catch (e) {
		return c.json({ err: "Failed to query user" }, 500);
	}
});

// Export the Hono instance as a Pages onRequest function
export const onRequest = handle(app);

役に立ちましたか?