Closed6
Cloudflare D1 を試す
CloudSQLを軽く置きたかったのでチュートリアルを試してみる。
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.
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!');
},
};
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-..."
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>"
サンプルコードを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にクローズされました