PlanetScale
PlanetScale ↗は、データベースを無限にスケーラブルにし、管理をより簡単かつ安全にするMySQL互換のプラットフォームです。
Database Integrations allow you to connect to a database from your Worker by getting the right configuration from your database provider and adding it as secrets to your Worker.
PlanetScaleとの統合を設定するには:
-
接続する既存のPlanetScaleデータベースが必要です。PlanetScaleデータベースを作成する ↗か、既存のデータベースをPlanetScaleにインポートする ↗必要があります。
-
PlanetScaleウェブコンソール ↗から、次のクエリを使用して
productsテーブルを作成します:CREATE TABLE products (id int NOT NULL AUTO_INCREMENT PRIMARY KEY,name varchar(255) NOT NULL,image_url varchar(255),category_id INT,KEY category_id_idx (category_id)); -
新しく作成したテーブルにデータを挿入します。次のコマンドを実行して、テーブルに製品とカテゴリを追加します:
INSERT INTO products (name, image_url, category_id)VALUES ('ボールペン', 'https://example.com/500x500', '1'); -
WorkerにPlanetScale統合を追加します:
- Cloudflareダッシュボード ↗にログインし、アカウントを選択します。
- アカウントホームで、Workers & Pagesを選択します。
- 概要で、Workerを選択します。
- 統合 > PlanetScaleを選択します。
- ステップ1で作成したデータベースを選択し、設定フローに従います。
-
Worker内で、PlanetScaleデータベースに接続し、データを操作するために
@planetscale/databaseドライバーをインストールします:Terminal window npm install @planetscale/database -
次の例は、Worker内でPlanetScaleデータベースにクエリを実行する方法を示しています。PlanetScaleに接続するために必要な認証情報は、統合を通じて自動的にWorkerのシークレットとして追加されています。
import { connect } from "@planetscale/database";export default {async fetch(request, env) {const config = {host: env.DATABASE_HOST,username: env.DATABASE_USERNAME,password: env.DATABASE_PASSWORD,// see https://github.com/cloudflare/workerd/issues/698fetch: (url, init) => {delete init["cache"];return fetch(url, init);},};const conn = connect(config);const data = await conn.execute("SELECT * FROM products;");return new Response(JSON.stringify(data.rows), {status: 200,headers: {"Content-Type": "application/json",},});},};
PlanetScaleについて詳しく知るには、PlanetScaleの公式ドキュメント ↗を参照してください。