跳到主要內容

如何從 Sequelize 遷移到 Prisma ORM

15 分鐘

引言

本指南將向您展示如何將應用程式從 Sequelize 遷移到 Prisma ORM。我們將使用 Sequelize Express 示例 的擴充套件版本作為示例專案 來演示遷移步驟。

本遷移指南使用 PostgreSQL 作為示例資料庫,但它同樣適用於 Prisma ORM 支援的任何其他關係型資料庫。您可以在 Prisma ORM 與 Sequelize 頁面瞭解 Prisma ORM 與 Sequelize 的比較。

先決條件

在開始本指南之前,請確保您已具備:

  • 要遷移的 Sequelize 專案
  • 已安裝 Node.js(版本 18 或更高)
  • PostgreSQL 或其他支援的資料庫
  • 對 Sequelize 和 Express.js 有基本瞭解

1. 準備遷移

1.1. 瞭解遷移過程

從 Sequelize 遷移到 Prisma ORM 的步驟始終相同,無論您構建何種應用程式或 API 層:

  1. 安裝 Prisma CLI
  2. 內省您的資料庫
  3. 建立基線遷移
  4. 安裝 Prisma Client
  5. 逐步將您的 Sequelize 查詢替換為 Prisma Client

這些步驟適用於您正在構建 REST API(例如,使用 Express、Koa 或 NestJS)、GraphQL API(例如,使用 Apollo Server、TypeGraphQL 或 Nexus)或任何其他使用 Sequelize 進行資料庫訪問的應用程式。

1.2. 設定 Prisma 配置

建立一個新的 Prisma schema 檔案

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

此命令為您建立了一個名為 prisma 的新目錄,其中包含以下檔案:

  • schema.prisma: 您的 Prisma schema,用於指定資料庫連線和模型
  • .env: 一個 dotenv 檔案,用於將您的資料庫連線 URL 配置為環境變數

Prisma schema 目前如下所示:

prisma/schema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

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

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

如果您正在使用 VS Code,請務必安裝 Prisma VS Code 擴充套件,以獲取語法高亮、格式化、自動補全以及更多酷炫功能。

使用您的資料庫連線字串更新 .env 檔案中的 DATABASE_URL

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

2. 遷移資料庫 schema

2.1. 內省您的資料庫

執行 Prisma 的內省以從現有資料庫建立 Prisma schema

npx prisma db pull

這將建立一個包含您的資料庫 schema 的 schema.prisma 檔案。

2.2. 建立基線遷移

要繼續使用 Prisma Migrate 來演進資料庫 schema,您需要為資料庫設定基線

首先,建立一個 migrations 目錄,並在其中新增一個目錄,名稱為您首選的遷移名稱。在此示例中,我們將使用 0_init 作為遷移名稱

mkdir -p prisma/migrations/0_init

接下來,使用 prisma migrate diff 生成遷移檔案。使用以下引數:

  • --from-empty: 假設您正在從中遷移的資料模型是空的
  • --to-schema-datamodel: 使用 datasource 塊中的 URL 的當前資料庫狀態
  • --script: 輸出 SQL 指令碼
npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql
npx prisma migrate resolve --applied 0_init

該命令將透過將其新增到 _prisma_migrations 表中來標記 0_init 為已應用。

您現在已經為當前的資料庫 schema 建立了基線。要對資料庫 schema 進行進一步更改,您可以更新 Prisma schema 並使用 prisma migrate dev 將更改應用到資料庫。

3. 更新您的應用程式程式碼

3.1. 安裝 Prisma Client

下一步,您可以在專案中安裝 Prisma Client,這樣您就可以開始替換專案中目前使用 Sequelize 進行的資料庫查詢了

npm install @prisma/client

安裝 Prisma Client 後,您可以生成 Prisma Client 程式碼

npx prisma generate

3.2. 替換 Sequelize 查詢

在本節中,我們將根據示例 REST API 專案中的示例路由,展示一些從 Sequelize 遷移到 Prisma Client 的示例查詢。要全面瞭解 Prisma Client API 與 Sequelize 的不同之處,請查閱 API 比較頁面。

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

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

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

// Delete
await User.destroy({
where: { id: 1 }
});

3.3. 更新您的控制器

更新您的 Express 控制器以使用 Prisma Client。例如,以下是如何更新使用者控制器:

import { prisma } from '../client'

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

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

return res.json(result)
}
}

後續步驟

現在您已經遷移到 Prisma ORM,您可以:

  • 使用 Prisma 強大的查詢 API 新增更復雜的查詢
  • 設定 Prisma Studio 進行資料庫管理
  • 實施資料庫監控
  • 使用 Prisma 的測試工具新增自動化測試

更多資訊:


與 Prisma 保持聯絡

透過以下方式繼續您的 Prisma 之旅: 我們的活躍社群。保持資訊暢通,參與其中,與其他開發者協作。

我們真誠地重視您的參與,並期待您成為我們社群的一員!

© . This site is unofficial and not affiliated with Prisma Data, Inc.