← Cloudflare D1 / d1 / examples
Dotazování D1 z SvelteKit
SvelteKit ↗ je full-stack framework, který kombinuje frontendový framework Svelte s Vite pro serverové funkce a renderování. Databázi D1 můžete dotazovat ze SvelteKit nastavením serverový endpoint ↗ s vazbou na vaši databázi (databáze) D1.
Pro nastavení nového webu SvelteKit na Cloudflare Pages, který umí dotazovat D1:
- Viz průvodce SvelteKit a Svelte Adaptér Cloudflare ↗.
- Do svého projektu SvelteKit nainstalujte adaptér Cloudflare:
npm i -D @sveltejs/adapter-cloudflare. - Navázání databáze D1 do vaší Pages Function.
- Předejte
--d1 BINDING_NAME=DATABASE_IDpříznak prowrangler devpři lokálním vývoji.BINDING_NAMEby mělo odpovídat volání ve vašem kódu aDATABASE_IDby měl odpovídatdatabase_iddefinované ve vašem Konfigurační soubor Wrangler: například--d1 DB=xxxx-xxxx-xxxx-xxxx-xxxx.
Následující příklad ukazuje, jak vytvořit koncový bod serveru nakonfigurovaný pro dotazování D1.
- Vazby jsou dostupné v
platformparametr předávaný každému koncovému bodu prostřednictvímplatform.env.BINDING_NAME. - S SvelteKit směrování založené na souborech ↗, serverový koncový bod definovaný v
src/routes/api/users/+server.tsje k dispozici na/api/usersve vaší aplikaci SvelteKit.
Příklad také ukazuje, jak nakonfigurovat typy platné pro celou aplikaci v rámci src/app.d.ts k rozpoznání vašeho D1Database binding naimportujte @sveltejs/adapter-cloudflare adaptér do svelte.config.js, a nakonfigurujte ji tak, aby platila pro všechny vaše trasy.
import type { RequestHandler } from "@sveltejs/kit";
export async function GET({ request, platform }) {
try {
let result = await platform.env.DB.prepare(
"SELECT * FROM users LIMIT 5",
).run();
return new Response(JSON.stringify(result), {
headers: { "Content-Type": "application/json" },
});
} catch (error) {
return Response.json({ error: "Failed to fetch users" }, {
status: 500
});
}
}// See https://kit.svelte.dev/docs/types#app
// for information about these interfaces
declare global {
namespace App {
// interface Error {}
// interface Locals {}
// interface PageData {}
interface Platform {
env: {
DB: D1Database;
};
context: {
waitUntil(promise: Promise<any>): void;
};
caches: CacheStorage & { default: Cache };
}
}
}
export {};import adapter from "@sveltejs/adapter-cloudflare";
export default {
kit: {
adapter: adapter({
// See below for an explanation of these options
routes: {
include: ["/*"],
exclude: ["<all>"],
},
}),
},
};