📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

TiDB Cloud Serverless Driver Prisma チュートリアル



プリズマ開発者が直感的、効率的、安全な方法でデータベースを操作できるようにするオープンソースの次世代 ORM (オブジェクト リレーショナル マッピング) です。 TiDB Cloudは@tidbcloud/prisma-adapterを提供しており、 TiDB Cloudサーバーレスドライバーで HTTPS 経由でPrismaクライアント使用できるようにします。従来の TCP 方法と比較して、@tidbcloud/prisma-adapterは次の利点があります。

  • サーバーレス環境におけるPrisma Clientのパフォーマンス向上
  • エッジ環境でPrisma Clientを使用できる機能

このチュートリアルでは、サーバーレス環境およびエッジ環境で@tidbcloud/prisma-adapter使用する方法について説明します。

ヒント:

このドキュメントの手順は、 TiDB Cloud Starterインスタンスに加えて、 TiDB Cloud Essentialインスタンスでも適用できます。

インストール

@tidbcloud/prisma-adapterTiDB Cloudサーバーレスドライバーの両方をインストールする必要があります。 npmまたは好みのパッケージ マネージャーを使用してインストールできます。

npmを例にとると、インストールするには以下のコマンドを実行します。

npm install @tidbcloud/prisma-adapter npm install @tidbcloud/serverless

driverAdaptersを有効にする

Prismaアダプタを使用するには、 driverAdaptersファイルでschema.prisma }機能を有効にする必要があります。例:

generator client { provider = "prisma-client-js" previewFeatures = ["driverAdapters"] } datasource db { provider = "mysql" url = env("DATABASE_URL") }

Prismaクライアントを初期化します

Prisma Clientを使用する前に、 @tidbcloud/prisma-adapterを使用して初期化する必要があります。

@tidbcloud/prisma-adapterバージョン6.6.0より前のバージョンの場合:

import { connect } from '@tidbcloud/serverless'; import { PrismaTiDBCloud } from '@tidbcloud/prisma-adapter'; import { PrismaClient } from '@prisma/client'; // Initialize Prisma Client const connection = connect({ url: ${DATABASE_URL} }); const adapter = new PrismaTiDBCloud(connection); const prisma = new PrismaClient({ adapter });

@tidbcloud/prisma-adapter v6.6.0以降のバージョンの場合:

import { PrismaTiDBCloud } from '@tidbcloud/prisma-adapter'; import { PrismaClient } from '@prisma/client'; // Initialize Prisma Client const adapter = new PrismaTiDBCloud({ url: ${DATABASE_URL} }); const prisma = new PrismaClient({ adapter });

その後、Prisma Clientからのクエリは、処理のためにTiDB Cloudのサーバーレスドライバに送信されます。

Node.js環境でPrismaアダプターを使用する

このセクションでは、Node.js 環境で@tidbcloud/prisma-adapter使用する方法の例を示します。

始める前に

このチュートリアルを完了するには、以下のものが必要です。

ステップ1. プロジェクトを作成する

  1. prisma-exampleという名前のプロジェクトを作成します。

    mkdir prisma-example cd prisma-example
  2. @tidbcloud/prisma-adapterドライバーアダプター、 @tidbcloud/serverlessサーバーレスドライバー、および Prisma CLI をインストールします。

    以下のコマンドはパッケージマネージャーとしてnpmを使用します。 npm install @tidbcloud/serverlessを実行すると、プロジェクトディレクトリにnode_modulesディレクトリとpackage.jsonファイルが作成されます。

    npm install @tidbcloud/prisma-adapter npm install @tidbcloud/serverless npm install prisma --save-dev
  3. package.jsonファイルで、 type: "module"を追加して ES モジュールを指定します。

    { "type": "module", "dependencies": { "@prisma/client": "^6.6.0", "@tidbcloud/prisma-adapter": "^6.6.0", "@tidbcloud/serverless": "^0.1.0" }, "devDependencies": { "prisma": "^6.6.0" } }

ステップ2. 環境を設定する

  1. TiDB Cloud Starterインスタンスの概要ページで、右上隅の「接続」をクリックし、表示されたダイアログからデータベースの接続文字列を取得します。接続文字列は次のようになります。

    mysql://[username]:[password]@[host]:4000/[database]?sslaccept=strict
  2. プロジェクトのルートディレクトリに、 .envという名前のファイルを作成し、次のようにDATABASE_URLという名前の環境変数を定義し、この変数内のプレースホルダー[]を接続文字列内の対応するパラメータに置き換えます。

    DATABASE_URL='mysql://[username]:[password]@[host]:4000/[database]?sslaccept=strict'

    注記:

    @tidbcloud/prisma-adapter 、HTTPS 経由の Prisma クライアントの使用のみをサポートします。 プリズマ・マイグレートおよびプリズマ・イントロプリズマ・イントロスペクションでは、従来の TCP 接続が引き続き使用されます。 Prisma Client のみを使用する必要がある場合は、 DATABASE_URLmysql://[username]:[password]@[host]/[database]形式に簡素化できます。

  3. dotenvファイルから環境変数を読み込むには、 .env } をインストールしてください。

    npm install dotenv

ステップ3.スキーマを定義する

  1. schema.prismaという名前のファイルを作成します。このファイルに、 driverAdaptersプレビュー機能を含め、 DATABASE_URL環境変数を参照します。以下にファイルの例を示します。

    // schema.prisma generator client { provider = "prisma-client-js" previewFeatures = ["driverAdapters"] } datasource db { provider = "mysql" url = env("DATABASE_URL") }
  2. schema.prismaファイルで、データベーステーブルのデータモデルを定義します。次の例では、 userという名前のデータモデルが定義されています。

    // schema.prisma generator client { provider = "prisma-client-js" previewFeatures = ["driverAdapters"] } datasource db { provider = "mysql" url = env("DATABASE_URL") } // define a data model according to your database table model user { id Int @id @default(autoincrement()) email String? @unique(map: "uniq_email") @db.VarChar(255) name String? @db.VarChar(255) }
  3. データベースをPrismaスキーマと同期させます。TiDB TiDB Cloud Starterインスタンスでデータベーステーブルを手動で作成するか、Prisma CLIを使用して次のように自動的に作成することができます。

    npx prisma db push

    このコマンドは、 userを使用した HTTPS 接続ではなく、従来の TCP 接続を通じてTiDB Cloud Starterインスタンスに@tidbcloud/prisma-adapterします。これは、Prisma Migrate と同じエンジンを使用しているためです。このコマンドの詳細については、 スキーマのプロトタイプを作成します参照してください。

  4. Prismaクライアントを生成する:

    npx prisma generate

    このコマンドは、Prismaスキーマに基づいてPrismaクライアントを生成します。

ステップ4.CRUD操作を実行する

  1. hello-word.jsという名前のファイルを作成し、以下のコードを追加してPrisma Clientを初期化します。

    import { PrismaTiDBCloud } from '@tidbcloud/prisma-adapter'; import { PrismaClient } from '@prisma/client'; import dotenv from 'dotenv'; // setup dotenv.config(); const connectionString = `${process.env.DATABASE_URL}`; // Initialize Prisma Client const adapter = new PrismaTiDBCloud({ url: connectionString }); const prisma = new PrismaClient({ adapter });
  2. Prisma Client を使用して、いくつかの CRUD 操作を実行します。例:

    // Insert const user = await prisma.user.create({ data: { email: 'test@pingcap.com', name: 'test', }, }) console.log(user) // Query console.log(await prisma.user.findMany()) // Delete await prisma.user.delete({ where: { id: user.id, }, })
  3. Prisma Client を使用してトランザクション操作を実行します。例:

    const createUser1 = prisma.user.create({ data: { email: 'test1@pingcap.com', name: 'test1', }, }) const createUser2 = prisma.user.create({ data: { email: 'test1@pingcap.com', name: 'test1', }, }) const createUser3 = prisma.user.create({ data: { email: 'test2@pingcap.com', name: 'test2', }, }) try { await prisma.$transaction([createUser1, createUser2]) // Operations fail because the email address is duplicated } catch (e) { console.log(e) } try { await prisma.$transaction([createUser2, createUser3]) // Operations success because the email address is unique } catch (e) { console.log(e) }

エッジ環境ではPrismaアダプタを使用する

Vercel Edge FunctionsやCloudflare Workersなどのエッジ環境では@tidbcloud/prisma-adapter v5.11.0以降のバージョンを使用できます。

このページは役に立ちましたか?