コンテンツにスキップ

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との統合を設定するには:

  1. 接続する既存のPlanetScaleデータベースが必要です。PlanetScaleデータベースを作成するか、既存のデータベースをPlanetScaleにインポートする必要があります。

  2. 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)
    );
  3. 新しく作成したテーブルにデータを挿入します。次のコマンドを実行して、テーブルに製品とカテゴリを追加します:

    INSERT INTO products (name, image_url, category_id)
    VALUES ('ボールペン', 'https://example.com/500x500', '1');
  4. WorkerにPlanetScale統合を追加します:

    1. Cloudflareダッシュボードにログインし、アカウントを選択します。
    2. アカウントホームで、Workers & Pagesを選択します。
    3. 概要で、Workerを選択します。
    4. 統合 > PlanetScaleを選択します。
    5. ステップ1で作成したデータベースを選択し、設定フローに従います。
  5. Worker内で、PlanetScaleデータベースに接続し、データを操作するために@planetscale/databaseドライバーをインストールします:

    Terminal window
    npm install @planetscale/database
  6. 次の例は、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/698
    fetch: (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の公式ドキュメントを参照してください。