メインコンテンツへスキップ

Nuxt で Prisma ORM を使用する方法

10 分

Prisma Nuxt モジュールは、初期設定プロセスを簡素化することで、Nuxt で Prisma を使い始めるのに役立ちます。このガイドでは、Nuxt アプリケーションをセットアップし、Prisma Nuxt モジュールを使用して Prisma Postgres を構成し、プロジェクトを本番環境向けに Vercel にデプロイする方法について説明します。

学習内容

  • Prisma Nuxt モジュールを使用して Nuxt プロジェクトをセットアップする方法。
  • Nuxt アプリケーションで Prisma Nuxt モジュールを使用して Prisma Postgres を構成および使用する方法。
  • プロジェクトを Vercel にデプロイする方法。

前提条件

このガイドに従うには、以下が必要です。

1. 新しい Nuxt プロジェクトを作成し、Prisma Nuxt モジュールをセットアップする

  1. 新しい Nuxt プロジェクトを初期化し、パッケージマネージャーとして npm を選択し、git を初期化します。

    npm create nuxt hello-world
    注意

    @prisma/nuxt モジュールでは、npm が最も安定したオプションであるため、npm を使用することをお勧めします。

  2. プロジェクトディレクトリに移動し、@prisma/nuxt モジュールをインストールします。

    cd hello-world
    npm i @prisma/nuxt
  3. Prisma Accelerate クライアント拡張機能 をインストールします。これは Prisma Postgres を使用するために必要です。

    npm i @prisma/extension-accelerate
  4. nuxt.config.ts ファイルに次の構成で @prisma/nuxt モジュールを追加します。

    // https://nuxt.dokyumento.jp/docs/api/configuration/nuxt-config
    export default defineNuxtConfig({
    compatibilityDate: "2024-11-01",
    modules: ["@prisma/nuxt"],
    experimental: {
    componentIslands: true,
    },
    devtools: { enabled: true },
    });

2. ローカルで開発サーバーを実行して Prisma ORM をセットアップする

Nuxt プロジェクトを Prisma モジュールで構成したら、次のステップは Prisma ORM をセットアップすることです。このプロセスは、開発サーバーを起動することから始まり、これは SQLite データベースで Prisma を自動的に構成します。

次のコマンドを実行して開発サーバーを起動します。

npm run dev

このコマンドを実行すると、Prisma Migrate を使用してデータベース移行を実行するように求められます。

? Do you want to migrate database changes to your database? › (Y/n)

Y キーを押して、データベースを移行し、初期テーブルを作成することを確認します。

セットアップフローが終了すると、次の処理が行われます。

  1. Prisma CLI をインストールしました。
  2. SQLite データベースで Prisma プロジェクトを初期化しました。
  3. schema.prisma ファイルにサンプルの User モデルと Post モデルを作成しました。
    prisma/schema.prisma
    // This is your Prisma schema file,
    // learn more about it in the docs: https://pris.ly/d/prisma-schema

    generator client {
    provider = "prisma-client-js"
    }

    datasource db {
    provider = "sqlite"
    url = env("DATABASE_URL")
    }

    model User {
    id Int @id @default(autoincrement())
    email String @unique
    name String?
    posts Post[]
    }

    model Post {
    id Int @id @default(autoincrement())
    title String
    content String?
    published Boolean @default(false)
    author User @relation(fields: [authorId], references: [id])
    authorId Int
    }
  4. 前のステップの User モデルと Post モデルのデータベーステーブルを作成しました。
    注意

    migrations フォルダがない場合、モジュールを最初に起動するときにデータベースは自動的に移行されます。その後、スキーマの変更を適用するには、CLI で npx prisma migrate dev を手動で実行する必要があります。npx prisma migrate dev コマンドを手動で実行すると、移行の管理が容易かつ安全になり、移行関連のエラーを トラブルシューティング するのも容易になります。

  5. DB のクエリを可能にする Prisma Client をインストールして生成しました。
  6. Prisma Studio をインストールしました。

Prisma のセットアップが完了すると、開発サーバーが https://localhost:3000 で起動します。

次に、コードを変更する必要があるため、サーバーを停止します。

4. アプリケーションコードを更新する

Prisma を構成したら、次のステップは、データベースからデータを取得して表示するようにアプリケーションコードを更新することです。

  1. プロジェクトのルートディレクトリに、components という名前のフォルダを作成します。

  2. components フォルダ内に、User.server.vue という名前のファイルを作成します。このサーバーコンポーネントは、データベースから最初のユーザーの名前を取得して表示します。

    components/User.server.vue
    <script setup>
    import { withAccelerate } from "@prisma/extension-accelerate";
    const prisma = usePrismaClient().$extends(withAccelerate());
    const user = await prisma.user.findFirst();
    </script>

    <template>
    <p>{{ user?.name ?? "No user has been added yet." }}</p>
    </template>
    注意

    Prisma Postgres との互換性を確保するために、withAccelerate() 拡張メソッドで usePrismaClient() コンポーザブルを拡張しています。この拡張機能により、クエリをキャッシュすることもできます。

  3. Nuxt Islands を使用して新しいサーバーコンポーネントを含めるように、ルートディレクトリにある app.vue ファイルを変更します。

    app.vue
    <template>
    <div>
    <NuxtIsland name="User"></NuxtIsland>
    </div>
    </template>
  4. 次のコマンドを実行して、開発サーバーを再度起動します。

    npm run dev
  5. https://localhost:3000 のブラウザでアプリケーションを開いて、アプリケーションコードが動作していることを確認します。
    データベースにはまだユーザーがいないため、アプリケーションには次のように表示されます。

    No user has been added yet.

    このメッセージは、ユーザーがデータベースに追加されると動的に更新されます。

これらの手順を完了すると、アプリケーションは Prisma データベースからデータを取得し、フロントエンドにレンダリングできるようになります。

5. Prisma Postgres インスタンスを作成する

アプリケーションのデータを保存するには、Prisma Data Platform を使用して Prisma Postgres データベースインスタンスを作成します。

Prisma Postgres データベースを作成するには、次の手順に従います。

  1. 以下にログインします。コンソールを開きます。
  2. 任意の ワークスペース で、新しいプロジェクト ボタンをクリックします。
  3. 名前 フィールドにプロジェクトの名前を入力します (例: hello-ppg)。
  4. Prisma Postgres セクションで、開始する ボタンをクリックします。
  5. リージョン ドロップダウンで、現在地から最も近いリージョンを選択します (例: 米国東部 (バージニア北部))。
  6. プロジェクトを作成 ボタンをクリックします。

この時点で、データベース ページにリダイレクトされ、データベースのステータスが PROVISIONING から CONNECTED に変わるまで数秒待つ必要があります。

緑色の CONNECTED ラベルが表示されたら、データベースを使用する準備が完了です!

次に、データベースアクセスの設定 セクションでデータベースの認証情報を探し、DATABASE_URL 環境変数をコピーします。

DATABASE_URL=<your-database-url>

DATABASE_URL 環境変数は、次のステップで必要になります。

6. Nuxt アプリケーションで Prisma Postgres をセットアップする

Prisma Postgres インスタンスの準備ができたので、このデータベースを使用するように Nuxt アプリケーションを更新します。

  1. 以前にコピーした値で既存の DATABASE_URL 値を置き換えて、.env ファイルを更新します。次のようになります。

    .env
    DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=PRISMA_POSTGRES_API_KEY"
  2. prisma フォルダにある schema.prisma ファイルの datasource ブロックで、データベースプロバイダーを変更して schema.prisma ファイルを変更します。

    prisma/schema.prisma
    datasource db {
    provider = "postgresql"
    url = env("DATABASE_URL")
    }
  3. prisma ディレクトリにある SQLite データベースファイル (dev.db および dev.db-journal) を migrations フォルダと一緒に削除します。これにより、既存の SQLite セットアップがクリーンアップされ、PostgreSQL への移行の準備が整います。

  4. prisma migrate コマンドを実行して、Postgres データベースの新しい移行を手動で作成します。

    npx prisma migrate dev --name init
  5. 開発サーバーを再度起動します。

    npm run dev
  6. Nuxt DevTools (Shift+Option+ D を押して開きます) を開き、左側のサイドナビにある Prisma ロゴをクリックして Prisma Studio を開きます。次に、name フィールドと email フィールドの値を指定して、新しい User レコードを追加します。

  7. https://localhost:3000 でアプリケーションを更新して、アプリケーションのデータを確認します。ページには、Prisma Studio で追加したユーザーの名前が表示されるはずです。たとえば、Jon という名前のユーザーを追加した場合、アプリケーションにはブラウザに Jon が表示されます。

おめでとうございます。Nuxt アプリケーションが Prisma Postgres と完全に統合されました!

7. Vercel にデプロイする

次の手順に従って、Prisma Postgres 統合を使用して Nuxt アプリケーションを Vercel にデプロイします。

  1. プロジェクトがバージョン管理され、GitHub リポジトリにプッシュされていることを確認します。まだリポジトリがない場合は、GitHub でリポジトリを作成します。リポジトリの準備ができたら、次のコマンドを実行します。
    git add .
    git commit -m "Initial commit with Prisma Postgres integration"
    git branch -M main
    git remote add origin https://github.com/<your-username>/<repository-name>.git
    git push -u origin main
    注意

    <your-username><repository-name> を GitHub のユーザー名とリポジトリの名前に置き換えます。

  2. Vercel にログインし、ダッシュボード に移動します。
  3. 新しいプロジェクトを作成します。Vercel の 既存のプロジェクトをインポートする ガイドに従いますが、デプロイ をクリックする前に環境変数を構成する ステップ 3 で停止します。
  4. DATABASE_URL 環境変数を構成します。
    1. 環境変数 セクションを展開します。
    2. DATABASE_URL 環境変数を追加します。
      • キー: DATABASE_URL
      • : Prisma Postgres 接続 URL を貼り付けます。たとえば、Nuxt プロジェクトの .env ファイルからコピーします。
      警告

      DATABASE_URL 変数を設定せずにデプロイしないでください。アプリケーションがデータベースに接続できない場合、デプロイは失敗します。

  5. デプロイ ボタンをクリックします。Vercel はプロジェクトをビルドし、ライブ URL にデプロイします。
  6. Vercel から提供されたライブ URL を開き、アプリケーションが動作していることを確認します。
    • Prisma Studio でユーザーを追加した場合、ライブサイトにその名前が表示されるはずです。
    • ユーザーが存在しない場合、アプリケーションには次のように表示されます。
      No user has been added yet.
  7. データを追加または管理するには
    1. Prisma Data Platform またはローカルインスタンスを介して Prisma Studio を開きます。
    2. データベースにユーザーデータを追加または更新します。
    3. ライブサイトを更新して変更を確認します。

おめでとうございます! Prisma Postgres 統合を備えた Nuxt アプリケーションがライブになり、Vercel で完全に動作するようになりました。

考慮事項

このガイドは、Nuxt モジュールを使用して Prisma Postgres を使い始めるのに役立ちます。Nuxt モジュールは積極的に進化しているため、Prisma のすべての機能を網羅しているわけではなく、すべてのエッジケースをサポートしているわけではありません。より高度な機能やエッジデプロイメントについては、Prisma を直接使用することを検討してください。


Prisma とのつながりを保つ

以下とつながることで、Prisma の旅を続けましょう。 活発なコミュニティ。最新情報を入手し、参加し、他の開発者と協力しましょう。

皆様のご参加を心から歓迎し、コミュニティの一員としてお迎えできることを楽しみにしています!