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

目錄
- 使用 Prisma Client 2.0 進行現代化資料庫訪問
- 此版本包含什麼?
- 將
prisma2倉庫重新命名為prisma - 重新命名
prisma2CLI - 我目前使用 Prisma 1;我該怎麼辦?
- 試用 Prisma 2.0 並分享您的反饋
TL;DR
- Prisma 2.0 測試版已準備就緒。憑藉全新的網站和文件,它現在是新開發者開始使用 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 schema 檔案,並且必須將 Prisma Client 作為依賴項新增到您的專案中
Prisma Client 可用於 *任何* Node.js 或 TypeScript 後端應用程式(包括無伺服器應用程式和微服務)。這可以是REST API、GraphQL API、gRPC API 或任何其他需要資料庫的應用程式。
提高資料庫操作效率
Prisma Client 的主要目標是提高應用程式開發人員在處理資料庫時的生產力。它透過提供一個返回純 JavaScript 物件的簡潔資料訪問 API 來實現這一點。
這種方法可以簡化對資料庫查詢的推理,並透過可預測(和型別安全)的查詢結果提高置信度。以下是 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 schema 進行更改時,都需要重新生成 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 (實驗性):宣告式 schema 遷移工具
- Prisma Studio (實驗性):用於檢視和編輯資料庫資料的 GUI 工具
透過新文件中的快速入門,在 5 分鐘內嘗試新的 Prisma Client。
注意:在發行說明中瞭解更多關於 Beta 版的資訊。
將 prisma2 倉庫重新命名為 prisma
自首次釋出以來,Prisma 2.0 的主倉庫一直被稱為 prisma2。
由於 Prisma 2.0 現在是新開發者開始使用 Prisma 的預設選擇,Prisma 倉庫已重新命名如下:
prisma/prisma2倉庫已重新命名為prisma/prismaprisma/prisma倉庫已重新命名為prisma/prisma1
重新命名 prisma2 CLI
在預覽期間,Prisma 2.0 的 CLI 使用 prisma2 命令呼叫。由於 Prisma 2.0 現在是新開發者開始使用 Prisma 的預設選擇,該命令已更改為 prisma。Prisma 1 現有的 prisma 命令已重新命名為 prisma1。
此外,請注意 npm 包的安裝方式也發生了變化
prisma2prismaprisma2@prisma/cli1.Xprismaprisma1prismaprisma1致當前 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 2.0 與 Prisma 1 相比有許多變化。以下是主要區別的高階概述:
- 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 schema中。 - Prisma 2.0 使用自己的建模語言,而非基於 GraphQL SDL。
- 您可以使用Nexus或您選擇的任何其他GraphQL 庫,透過 Prisma 構建 GraphQL 伺服器。
我如何訪問 Prisma 1 文件?
您可以透過在 https://prisma.tw/docs 後附加版本號來繼續訪問 Prisma 1 文件的特定版本。例如,要檢視 Prisma 1.34 版本的文件,您可以訪問 https://v1.prisma.io/docs/1.34/。
Prisma 1 示例已移至 prisma1-examples 倉庫。
我應該升級嗎?
您是否應該升級取決於您專案的具體情況。一般來說,一個主要考慮因素是 Prisma Migrate 仍處於實驗階段。這意味著您未來可能需要使用 SQL 或其他遷移工具來調整資料庫 schema。
此外,請注意,我們將在未來幾周內準備一份升級指南以及用於升級過程的專用工具。因此,如果您確實想升級,儘管 Prisma Migrate 尚未準備就緒,但等待這些資源到位可能更值得。
我使用 Prisma 1 及 Prisma Client 和 nexus-prisma,我應該升級嗎?
將執行 Prisma 1 和 nexus-prisma 的專案升級到 Prisma 2.0 確實是可行的。
如果您決定升級,請注意,在升級到 Prisma 2.0 後更改資料庫 schema 將需要使用 SQL 或第三方遷移工具執行遷移。此外,請注意 nexus-prisma API 隨 Prisma 2.0 發生了變化。
以下是升級所需步驟的高階概述:
- 在您的專案中安裝 Prisma 2.0 CLI:
npm install @prisma/cli --save-dev - 建立一個 Prisma schema,其中包含指向您的 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 後更改資料庫 schema 將需要使用 SQL 或第三方遷移工具執行遷移。以下是升級所需步驟的高階概述:
- 導航到您的專案目錄
- 在您的專案中安裝 Prisma 2.0 CLI:
npm install @prisma/cli --save-dev - 建立一個 Prisma schema,其中包含指向您的 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 後更改資料庫 schema 將需要使用 SQL 或第三方遷移工具執行遷移。
此外,請注意,您的 GraphQL 解析器實現方式隨 Prisma 2.0 而改變。由於 Prisma 2.0 不再暴露用於資料庫的 GraphQL API,您將無法再使用 prisma-binding npm 包。這主要與實現 *關聯* 有關,現在這些關聯的解析器需要在 *型別層面* 實現。要了解更多關於此必要性的資訊,請務必閱讀這篇關於GraphQL schema 基礎知識的文章。
以下是升級所需步驟的高階概述:
- 在您的專案中安裝 Prisma 2.0 CLI:
npm install @prisma/cli --save-dev - 建立一個 Prisma schema,其中包含指向您的 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
如果您想留下反饋、分享想法、提出功能請求或提交 Bug 報告,請在 GitHub 上(已重新命名的)prisma 倉庫中進行,並加入 Prisma Slack 上(已重新命名的)#prisma2-beta 頻道!
不要錯過下一篇文章!
訂閱 Prisma 新聞郵件