Closed6

Cloudflare D1 を試す

t0m0120t0m0120

Get started

npm createして質問に答えていく

$ npm create cloudflare@latest

Your directory has been titled d1-tutorial.
Choose "Hello World" script for the type of application.
Select yes to using TypeScript.
Select yes to using Git.
Select no to deploying.
t0m0120t0m0120

d1-tutorialディレクトリが作られるのでファイルを確認する。

d1-tutorial/src/worker.tsにアクセスするとHelloWorldを返すファイルが生成されている。

export default {
  async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
     return new Response('Hello World!');
  },
};
t0m0120t0m0120

D1 DBを作成する

$ npx wrangler d1 create <DATABASE_NAME>
✅ Successfully created <DATABASE_NAME> 'd1' in region APAC

[[d1_databases]]
binding = "DB" # i.e. available in your Worker on env.DB
database_name = "NAME"
database_id = "1234-..."
t0m0120t0m0120

D1 データベースとWorkerを結びつける。

wrangler.toml に上記のデータベース名とIDを追加して、連携する

[[d1_databases]]
binding = "DB" # i.e. available in your Worker on env.DB
database_name = "<DATABASE_NAME>"
database_id = "<unique-ID-for-your-database>"
t0m0120t0m0120

サンプルコードをworker.tsへコピペする。

export interface Env {
  // If you set another name in wrangler.toml as the value for 'binding',
  // replace "DB" with the variable name you defined.
  DB: D1Database;
}

export default {
  async fetch(request: Request, env: Env) {
    const { pathname } = new URL(request.url);

    if (pathname === "/api/beverages") {
      // If you did not use `DB` as your binding name, change it here
      const { results } = await env.DB.prepare(
        "SELECT * FROM Customers WHERE CompanyName = ?"
      )
        .bind("Bs Beverages")
        .all();
      return Response.json(results);
    }

    return new Response(
      "Call /api/beverages to see everyone who works at Bs Beverages"
    );
  },
};

下記でローカルに環境を立ち上げられるので、立ち上げて「http://localhost:8787/api/beverages」へアクセスすることでCompanyNameがBs Beveragesのカラムが表示される。

$ npx wrangler dev
このスクラップは2023/07/10にクローズされました