INTEGRITY Документация

Запрос к D1 из Hono

Hono - это быстрый веб-фреймворк для создания API-ориентированных приложений, который в равной мере хорошо поддерживает Workers и Pages.

При использовании Workers:

Если вы используете Pages Functions:

  1. Привяжите базу данных D1 к своему Pages Function.
  2. Передайте --d1 BINDING_NAME=DATABASE_ID флаг для wrangler dev при локальной разработке. BINDING_NAME должен соответствовать вызову в вашем коде, и DATABASE_ID должен совпадать с database_id определённые в конфигурационном файле Wrangler, например --d1 DB=xxxx-xxxx-xxxx-xxxx-xxxx.
  3. См. руководство Hono для Cloudflare Pages.

В следующих примерах показано, как обращаться к базе данных D1, привязанной к DB как из скрипта 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);