去年六月,我們推出了 Prisma 2.0 的第一個預覽版本。今天,我們很高興推出第一個官方 Beta 版,以及新的 網站 和更新的 Prisma 2.0 文件。
更新: Prisma 現在已準備好用於生產環境。請閱讀公告文章以了解更多資訊:Node.js 和 TypeScript 的完整 ORM。

目錄
- 使用 Prisma Client 2.0 進行現代資料庫存取
- 此版本包含哪些內容?
- 將
prisma2
儲存庫重新命名為prisma
- 重新命名
prisma2
CLI - 我目前使用 Prisma 1;我該怎麼辦?
- 試用 Prisma 2.0 並分享您的意見回饋
TL;DR
- Prisma 2.0 Beta 版已準備就緒。憑藉新的網站和文件,它現在是新開發人員開始使用 Prisma 的預設選擇。
- Prisma 2.0 主要包含 Prisma Client,這是一個為 Node.js 和 TypeScript 自動產生且型別安全的查詢建構器。Prisma Migrate 被認為是實驗性的。
prisma/prisma2
儲存庫已重新命名為prisma/prisma
(而之前的 Prisma 1 儲存庫prisma/prisma
儲存庫現在稱為prisma/prisma1
)。
按照新文件中的 快速入門,在 5 分鐘內試用新的 Prisma Client。
使用 Prisma Client 2.0 進行現代資料庫存取
新版本的 Prisma Client 是適用於 Node.js 和 TypeScript 的現代資料庫存取函式庫。它可以作為傳統 ORM 和 SQL 查詢建構器的替代方案,用於讀取和寫入資料庫中的資料。
若要設定它,您需要一個 Prisma 結構描述檔案,並且必須將 Prisma Client 作為依賴項新增至您的專案
Prisma Client 可以用於任何 Node.js 或 TypeScript 後端應用程式(包括無伺服器應用程式和微服務)。這可以是 REST API、GraphQL API、gRPC API,或任何其他需要資料庫的東西。
更有效率地使用您的資料庫
Prisma Client 的主要目標是提高應用程式開發人員在使用資料庫時的生產力。它透過提供一個乾淨的資料存取 API 來實現這一點,該 API 會傳回純 JavaScript 物件。
這種方法可以更簡單地推理資料庫查詢,並透過可預測(且型別安全)的查詢結果來提高信心。以下是 Prisma Client 提供的一些主要優勢
- 程式碼編輯器中的自動完成,而無需查閱文件
- 以物件思考,而不是對應關聯式資料
- 可在編譯時驗證的型別安全資料庫查詢
- 資料庫和應用程式模型的單一事實來源
- 健康的約束,可防止常見的陷阱和反模式
- 一種使正確的事情變得容易的抽象化(「成功之坑」)
- 查詢而非類別,以避免複雜的模型物件
- 更少的樣板程式碼,讓開發人員可以專注於應用程式的重要部分
在 簡介 中了解更多關於 Prisma 如何提高開發人員生產力的資訊,或在 網站 上查看程式碼範例,以體驗 Prisma Client API。
「智慧型」node 模組 🤓
@prisma/client
模組與「傳統」node 模組不同。對於傳統的 node 模組(例如,lodash
),整個套件都會下載到您的 node_modules
目錄中,並且只有在您重新安裝套件時才會更新。
@prisma/client
node 模組有所不同。它是一個 「外觀套件」(基本上是一個存根),不包含任何功能程式碼。
雖然您確實需要使用 npm install @prisma/client
安裝一次,但當您開發應用程式時,node_modules/@prisma/client
目錄中的程式碼可能會更頻繁地變更。這是因為每當您變更 Prisma 結構描述時,您都需要重新產生 Prisma Client,這會更新 @prisma/client
node 模組中的程式碼。
由於 node_modules/@prisma/client
目錄包含一些專為您的專案量身打造的程式碼,因此有時被稱為「智慧型 node 模組」
即使在純 JavaScript 中也能享受自動完成和型別安全的好處
自動完成對於開發人員來說是一個非常強大的工具。它允許他們直接在編輯器中探索 API,而無需參考文件。Prisma Client 將自動完成功能帶入您的資料庫查詢!
由於 Prisma Client 產生的型別包含在 @prisma/client
模組的 index.d.ts
中,因此此功能不僅適用於 TypeScript 開發人員,也適用於以純 JavaScript 開發應用程式時。
部分資料庫查詢的型別安全
與其他 ORM 和資料庫工具相比,Prisma Client 的主要優勢在於它提供了完整的型別安全 - 即使是「部分」資料庫查詢(即,當您僅查詢模型欄位的子集或包含 關聯 時)。
例如,考慮以下 Prisma Client 查詢(您可以切換標籤以檢視對應的 Prisma 模型)
請注意,產生的 usersWithPartialPosts
將被靜態型別化為
這表示當您輸入錯誤或意外存取未從資料庫請求的屬性時,TypeScript 會捕捉到任何錯誤!
開始使用
開始使用 Prisma Client 的最佳方法是按照文件中的 快速入門 進行操作
快速入門(5 分鐘)
或者,您可以
此版本包含哪些內容?
Prisma 2.0 Beta 版隨附以下工具
- Prisma Client:適用於 Node.js 和 TypeScript 的自動產生、型別安全查詢建構器
- Prisma Migrate(實驗性):宣告式結構描述遷移工具
- Prisma Studio(實驗性):用於檢視和編輯資料庫中資料的 GUI
按照新文件中的 快速入門,在 5 分鐘內試用新的 Prisma Client。
注意:在 版本說明 中了解更多關於 Beta 版發布的資訊。
將 prisma2
儲存庫重新命名為 prisma
自最初發布以來,Prisma 2.0 的主要儲存庫一直稱為 prisma2
。
由於 Prisma 2.0 現在是開始使用 Prisma 的開發人員的預設選擇,因此 Prisma 儲存庫已重新命名如下
prisma/prisma2
儲存庫已重新命名為prisma/prisma
prisma/prisma
儲存庫已重新命名為prisma/prisma1
重新命名 prisma2
CLI
在預覽期間,Prisma 2.0 的 CLI 是使用 prisma2
命令調用的。由於 Prisma 2.0 是開始使用 Prisma 的新開發人員的預設選擇,因此命令已變更為僅 prisma
。現有的 Prisma 1 的 prisma
命令已重新命名為 prisma1
。
另請注意,npm 套件的安裝方式已變更
Prisma 版本 | 舊版 CLI 命令 | 新版 CLI 命令 | 舊版 npm 套件名稱 | 新版 npm 套件名稱 |
---|---|---|---|---|
2.0 | prisma2 | prisma | prisma2 | @prisma/cli |
1.X | prisma | prisma1 | prisma | prisma1 |
Prisma 1 目前使用者的注意事項
如果您目前使用 prisma
命令的 Prisma 1,您可以繼續像以前一樣使用它。如果您想升級到 Prisma 2.0,建議您解除安裝目前的 prisma
安裝,並在需要它們的專案中在本機安裝新的 CLI 版本
prisma2
npm 套件已被棄用
prisma2
npm 套件現在已被棄用。為了防止安裝期間產生混淆,當您嘗試安裝它時,現在會輸出以下內容
我目前使用 Prisma 1;我該怎麼辦?
首先,我們要非常感謝所有現有的 Prisma 1 使用者!🙏 我們非常感謝在 GitHub 和 Slack 上形成的支援性和活躍社群!
Prisma 2.0 與 Prisma 1 相比如何?
與 Prisma 1 相比,Prisma 2.0 有許多變更。以下是 主要差異 的高階概述
- Prisma 2.0 不需要託管資料庫代理伺服器(即 Prisma 伺服器)。
- Prisma 2.0 不再公開 「適用於您資料庫的 GraphQL API」,但僅允許透過 Prisma Client API 進行程式化存取。
- Prisma 2.0 使 Prisma 1 的功能更加模組化,並將其拆分為專用工具
- Prisma Client:Prisma client 1.0 的改進版本
- Prisma Migrate:資料模型和遷移(以前的
prisma deploy
)。
- 更強大的內省功能允許將 Prisma 2.0 連接到任何現有資料庫。
- Prisma 1 資料模型和
prisma.yml
已合併到 Prisma 結構描述 中。 - Prisma 2.0 使用自己的 建模語言,而不是基於 GraphQL SDL。
- 您可以使用 Nexus 或任何其他您選擇的 GraphQL 函式庫,使用 Prisma 建置 GraphQL 伺服器。
我如何存取 Prisma 1 文件?
您可以透過將版本號碼附加到 https://prisma.dev.org.tw/docs
來繼續存取 Prisma 1 文件的特定版本。例如,若要檢視 Prisma 版本 1.34 的文件,您可以前往 https://v1.prisma.io/docs/1.34/
。
Prisma 1 範例已移至 prisma1-examples
儲存庫。
我應該升級嗎?
您是否應該升級取決於您的專案背景。一般來說,一個主要的考量因素是 Prisma Migrate 仍然是實驗性的。這表示您可能需要使用 SQL 或其他遷移工具對您的資料庫結構描述進行任何未來的調整。
另請注意,我們將在接下來的幾週內整理 升級指南以及專用工具 以進行升級過程。因此,如果您確實想升級,儘管 Prisma Migrate 尚未準備就緒,但等待這些資源到位可能值得。
我將 Prisma 1 與 Prisma client 和 nexus-prisma
搭配使用,我應該升級嗎?
絕對有可能將在 Prisma 1 和 nexus-prisma
上執行的專案升級到 Prisma 2.0。
如果您決定升級,請注意,在升級到 Prisma 2.0 後變更您的資料庫結構描述,將需要使用 SQL 或第三方遷移工具執行遷移。另請注意,nexus-prisma
API 會隨著 Prisma 2.0 而變更。
以下是升級所需步驟的高階概述
- 在您的專案中安裝 Prisma 2.0 CLI:
npm install @prisma/cli --save-dev
- 建立一個 Prisma 結構描述,其中包含指向您的 Prisma 1 資料庫的
datasource
- 內省您的 Prisma 1 資料庫以取得您的資料模型:
npx prisma introspect
- 安裝 Prisma Client npm 套件:
npm install @prisma/client
- 產生 Prisma Client JS:
npx prisma generate
- 升級到最新版本的
nexus-prisma
並調整您的解析器。
注意:您可以在用於部署 Prisma 伺服器的 Docker Compose 檔案中找到您的資料庫憑證。組成 Prisma 2.0 的 連線 URL 需要這些憑證。
我將 Prisma 1 與 Prisma client(沒有 nexus-prisma
)搭配使用,我應該升級嗎?
絕對有可能升級在 Prisma 1 上執行的專案。
如果您決定升級,請注意,在升級到 Prisma 2.0 後變更您的資料庫結構描述,將需要使用 SQL 或第三方遷移工具執行遷移。以下是升級所需步驟的高階概述
- 導覽至您的專案目錄
- 在您的專案中安裝 Prisma 2.0 CLI:
npm install @prisma/cli --save-dev
- 建立一個 Prisma 結構描述,其中包含指向您的 Prisma 1 資料庫的
datasource
- 內省您的 Prisma 1 資料庫以取得您的資料模型:
npx prisma introspect
- 安裝 Prisma Client npm 套件:
npm install @prisma/client
- 產生 Prisma Client JS:
npx prisma generate
- 將您先前使用 Prisma client 1.0 的位置更新為新的 Prisma Client 2.0
注意:您可以在用於部署 Prisma 伺服器的 Docker Compose 檔案中找到您的資料庫憑證。組成 Prisma 2.0 的 連線 URL 需要這些憑證。
我將 Prisma 1 與 prisma-binding
搭配使用,我應該升級嗎?
絕對有可能將在 Prisma 1 和 prisma-binding
上執行的專案升級到 Prisma 2.0。
如果您決定升級,請注意,在升級到 Prisma 2.0 後變更您的資料庫結構描述,將需要使用 SQL 或第三方遷移工具執行遷移。
另請注意,您的 GraphQL 解析器的實作方式會隨著 Prisma 2.0 而變更。由於 Prisma 2.0 不會為您的資料庫公開 GraphQL API,因此您無法再使用 prisma-binding
npm 套件。這主要與實作關聯有關,這些關聯的解析器現在需要在型別層級上實作。若要深入了解為何有此必要,請務必閱讀這篇關於 GraphQL 結構描述 基礎知識的文章。
以下是升級所需步驟的高階概述
- 在您的專案中安裝 Prisma 2.0 CLI:
npm install @prisma/cli --save-dev
- 建立一個 Prisma 結構描述,其中包含指向您的 Prisma 1 資料庫的
datasource
- 內省您的 Prisma 1 資料庫以取得您的資料模型:
npx prisma introspect
- 安裝 Prisma Client npm 套件:
npm install @prisma/client
- 產生 Prisma Client JS:
npx prisma generate
- 調整您的解析器以使用 Prisma Client 而不是
prisma-binding
如果您想切換到 程式碼優先 方法,請查看 GraphQL Nexus。
注意:您可以在用於部署 Prisma 伺服器的 Docker Compose 檔案中找到您的資料庫憑證。組成 Prisma 2.0 的 連線 URL 需要這些憑證。
試用 Prisma 2.0 並分享您的意見回饋
我們真的很高興終於可以分享 Prisma 2.0 的 Beta 版本,並且迫不及待想看看大家會用它建置什麼。
開始使用 Prisma 2.0
如果您想留下意見回饋、分享想法、建立功能請求或提交錯誤報告,請在 GitHub 上的(已重新命名)prisma
儲存庫中執行此操作,並加入 Prisma Slack 上的(已重新命名)#prisma2-beta
頻道!
不要錯過下一篇文章!
訂閱 Prisma 電子報