← Cloudflare D1 / d1 / examples
Dotazování D1 z Remix
Remix je full-stack webový framework fungující na klientovi i na serveru. Databázi (databáze) D1 můžete z Remixu dotazovat pomocí jeho načítání dat ↗ API s useLoaderData ↗ hook.
Pro nastavení nového webu Remix na Cloudflare Pages, který umí dotazovat D1:
- Viz průvodce Remix.
- Navažte databázi D1 na svůj 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 definovat Remix loader ↗ která má vazbu na databázi D1.
- Vazby jsou předávány přes
context.cloudflare.envparametr předaný doLoaderFunction. - Pokud jste nakonfigurovali binding s názvem
DB, pak byste přistupovali k D1 Workers Binding API metody prostřednictvímcontext.cloudflare.env.DB.
import type { LoaderFunction } from "@remix-run/cloudflare";
import { json } from "@remix-run/cloudflare";
import { useLoaderData } from "@remix-run/react";
interface Env {
DB: D1Database;
}
export const loader: LoaderFunction = async ({ context, params }) => {
let env = context.cloudflare.env as Env;
try {
let { results } = await env.DB.prepare("SELECT * FROM users LIMIT 5").run();
return json(results);
} catch (error) {
return json({ error: "Failed to fetch users" }, { status: 500 });
}
};
export default function Index() {
const results = useLoaderData<typeof loader>();
return (
<div style={{ fontFamily: "system-ui, sans-serif", lineHeight: "1.8" }}>
<h1>Welcome to Remix</h1>
<div>
A value from D1:
<pre>{JSON.stringify(results)}</pre>
</div>
</div>
);
}