INTEGRITY Dokumentace

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:

  1. Viz průvodce Remix.
  2. Navažte databázi D1 na svůj Pages Function.
  3. Předejte --d1 BINDING_NAME=DATABASE_ID příznak pro wrangler dev při lokálním vývoji. BINDING_NAME by mělo odpovídat volání ve vašem kódu a DATABASE_ID by měl odpovídat database_id definované 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.

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>
  );
}