6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

next.jsでのMySQL接続する方法(Prisma ORM導入)

Posted at

chatGPTで勉強をしています。

Prismaは、次世代のNode.jsとTypeScriptのORMで、データベースとのやり取りを簡単にするための強力なツールセットを提供します。MySQLデータベースに接続するには、いくつかのステップを踏む必要があります。以下に、そのプロセスを詳しく説明します。

1. Prismaのインストール

まず、Node.jsプロジェクトを持っている必要があります。もし持っていなければ、新しいプロジェクトを作成してください。次に、プロジェクトディレクトリ内で次のコマンドを実行して、Prismaをインストールします。

npm install prisma --save-dev
npx prisma init

これにより、prismaディレクトリとprisma/schema.prismaファイルがプロジェクトに生成されます。

2. データベース接続の設定

prisma/schema.prismaファイルを開き、データベース接続設定を行います。MySQLに接続するには、以下のようにdatasourceブロックを設定する必要があります。

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

ここで、DATABASE_URLは環境変数を介して提供される接続文字列です。.envファイルをプロジェクトルートに作成し、以下のようにMySQLデータベースへの接続情報を含めます。

DATABASE_URL="mysql://ユーザー名:パスワード@ホスト:ポート/データベース名"

3. Prismaクライアントのインストール

Prismaクライアントは、Prismaスキーマから生成されたタイプセーフなクエリビルダーです。以下のコマンドでインストールできます。

npm install @prisma/client

4. マイグレーションの設定(任意)

Prismaのマイグレーション機能を利用してデータベースのスキーマを管理することもできます。新しいマイグレーションを作成するには、以下のコマンドを使用します。

npx prisma migrate dev --name initial-migration

5. Prismaクライアントの生成

Prismaクライアントのコードを生成し、データベースとの対話を可能にします。

npx prisma generate

6. クエリの実行

最後に、Prismaクライアントを使用してクエリを実行します。例えば、新しいユーザーを作成するには、以下のようなコードを使用します。

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  const newUser = await prisma.user.create({
    data: {
      name: 'Alice',
      email: 'alice@example.com',
    },
  })
  console.log(newUser)
}

main()
  .catch(e => {
    throw e
  })
  .finally(async () => {
    await prisma.$disconnect()
  })

これらのステップに従って設定を行うと、Prismaを使用してMySQLデータベースに接続し、データを照会および操作する準備が整います。公式ドキュメントも参考にして、さらに詳しい情報や高度な使用方法を学んでください。

Prisma のテーブル追加手順

Prismaでテーブルを追加するには、Prismaスキーマに新しいモデルを定義し、それを使用してデータベースマイグレーションを行う必要があります。以下に、このプロセスのステップバイステップのガイドを提供します。

ステップ1: Prismaスキーマの編集

Prismaスキーマファイル(通常はprisma/schema.prisma)を開き、新しいテーブルに対応する新しいモデルを追加します。例えば、Postテーブルを追加する場合、以下のようなモデルを定義することができます。

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String?
  published Boolean  @default(false)
  authorId  Int
  author    User     @relation(fields: [authorId], references: [id])
}

この定義では、Postはいくつかのフィールドを持つ新しいテーブル(またはモデル)であり、authorフィールドを通じてUserモデルと関連付けられています。

ステップ2: マイグレーションの作成

次に、Prismaマイグレーションを使用してデータベースに変更を適用します。ターミナルで以下のコマンドを実行して新しいマイグレーションを作成します。

npx prisma migrate dev --name add-post-model

このコマンドは、新しいマイグレーションファイルをprisma/migrationsディレクトリに作成し、開発データベースに即座に適用します。--nameフラグは、マイグレーションに名前を付けるために使用されます。

ステップ3: Prismaクライアントの再生成

データベーススキーマが変更されるたびに、Prismaクライアントを再生成する必要があります。これにより、新しいテーブルやフィールドに対応したタイプセーフなクエリが利用可能になります。

npx prisma generate

ステップ4: 新しいテーブルを使用する

最後に、更新されたPrismaクライアントを使用して、新しいPostテーブルにデータを作成、照会、更新、削除することができます。以下は新しいポストを作成する例です。

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  const newPost = await prisma.post.create({
    data: {
      title: 'Prisma is awesome!',
      content: 'This is why...',
      authorId: 1, // 既存のユーザーIDを仮定
    },
  })
  console.log(newPost)
}

main()
  .catch(e => {
    throw e
  })
  .finally(async () => {
    await prisma.$disconnect()
  })

これで、Prismaを使用して新しいテーブルを追加し、それを操作する方法が完了しました。データベーススキーマの変更、マイグレーションの適用、そしてそれらの変更を利用してデータを操作するプロセスを理解することが重要です。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?