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

TypeORMからPrisma ORMへの移行方法

15分

はじめに

このガイドでは、アプリケーションをTypeORMからPrisma ORMに移行する方法を説明します。移行手順をデモンストレーションするために、TypeORM Expressの拡張例サンプルプロジェクトとして使用します。

この移行ガイドでは、PostgreSQLをデータベースの例として使用していますが、Prisma ORMがサポートする他のリレーショナルデータベースにも同様に適用できます。Prisma ORMとTypeORMの比較については、「Prisma ORM vs TypeORM」ページで確認できます。

前提条件

このガイドを開始する前に、以下が揃っていることを確認してください。

  • 移行したいTypeORMプロジェクト
  • Node.jsがインストールされていること (バージョン16以降)
  • PostgreSQLまたはその他のサポートされているデータベース
  • TypeORMおよびExpress.jsの基本的な知識

2. 移行の準備

2.1. 移行プロセスを理解する

どのようなアプリケーションやAPIレイヤーを構築しているかに関わらず、TypeORMからPrisma ORMへの移行手順は常に同じです。

  1. Prisma CLIのインストール
  2. データベースのイントロスペクト
  3. ベースラインマイグレーションの作成
  4. Prisma Clientのインストール
  5. TypeORMクエリをPrisma Clientに徐々に置き換える

これらの手順は、REST API (例: Express, Koa, NestJS)、GraphQL API (例: Apollo Server, TypeGraphQL, Nexus)、またはデータベースアクセスにTypeORMを使用するその他の種類のアプリケーションを構築しているかどうかにかかわらず適用されます。

2.2. Prisma設定をセットアップする

新しいPrismaスキーマファイルを作成する

npx prisma init --output ../generated/prisma

.envファイル内のDATABASE_URLをデータベース接続文字列で更新する

DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE"

3. データベーススキーマを移行する

3.1. データベースをイントロスペクトする

既存のデータベースからPrismaスキーマを作成するためにPrismaのイントロスペクションを実行します

npx prisma db pull

これにより、データベーススキーマを含むschema.prismaファイルが作成されます。

3.2. ベースラインマイグレーションを作成する

データベースの現在の状態をマークするために、ベースラインマイグレーションを作成して適用します。

npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > baseline.sql
npx prisma migrate resolve --applied "baseline"

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

4.1. Prisma Clientをインストールする

Prisma Clientパッケージをインストールします

npm install @prisma/client

Prisma Clientを生成します

npx prisma generate

4.2. TypeORMクエリを置き換える

TypeORMクエリをPrisma Clientに置き換え始めましょう。一般的なクエリの変換例をいくつか示します。

// Find one
const user = await userRepository.findOne({
where: { id: 1 }
});

// Create
const user = await userRepository.save({
email: 'alice@prisma.io',
name: 'Alice'
});

// Update
await userRepository.update(1, {
name: 'New name'
});

// Delete
await userRepository.delete(1);

4.3. コントローラーを更新する

Expressコントローラーを更新してPrisma Clientを使用するようにします。例えば、CreateUserActionを更新する方法を以下に示します。

import { prisma } from '../client'

export class CreateUserAction {
async run(req: Request, res: Response) {
const { email, name } = req.body

const result = await prisma.user.create({
data: {
email,
name,
},
})

return res.json(result)
}
}

5. テストとデプロイ

5.1. 変更をテストする

移行されたすべてのエンドポイントをテストし、期待通りに動作することを確認します。

npm test

5.2. 変更をデプロイする

  1. スキーマの変更をデプロイします。
npx prisma migrate deploy
  1. 更新された依存関係とともにアプリケーションコードをデプロイします。

次のステップ

Prisma ORMへの移行が完了したら、以下を実行できます。

  • Prismaの強力なクエリAPIを使用して、より複雑なクエリを追加する
  • データベース管理のためにPrisma Studioをセットアップする
  • データベース監視を実装する
  • Prismaのテストユーティリティを使用して自動テストを追加する

詳細情報


Prismaとつながる

Prismaの旅を続けるには、以下とつながりましょう。 活発なコミュニティに参加しましょう。情報を入手し、関与し、他の開発者と協力できます。

  • Xでフォローする アナウンス、ライブイベント、役立つヒントのために。
  • Discordに参加する 質問をしたり、コミュニティと話したり、会話を通じて活発なサポートを得るために。
  • YouTubeを購読する チュートリアル、デモ、ストリームのために。
  • GitHubで関わる リポジトリにスターを付けたり、問題を報告したり、問題に貢献したりして。
皆様のご参加を心より歓迎し、コミュニティの一員となることを楽しみにしています!

© . All rights reserved.