2018年9月11日

Prisma Client(預覽版):簡化且型別安全的資料庫訪問

Prisma Client 是一個自動生成的庫,可以作為 Prisma bindings 的替代方案,用於在您的應用程式中訪問資料。它支援 JavaScript、TypeScript、Flow 和 Go。

Prisma Client (Preview): Simplified & Type-safe Database Access

⚠️ 本文已過時,因為它涉及現已棄用Prisma 1。要了解最新版本的 Prisma,請閱讀文件。 ⚠️

Prisma Client:Prisma bindings 的下一次演進

Prisma 將您的資料庫轉換為 GraphQL API。這個 GraphQL API 通常不會被前端應用程式直接使用,而是作為一種資料庫抽象,簡化應用程式伺服器中的資料訪問(類似於 ORM)。

使用 Prisma 實現 GraphQL 伺服器時,GraphQL 伺服器的解析器透過 Prisma bindingsschema delegation 連線到 Prisma API。

Schema delegation 是一種透過將傳入請求(使用 info 物件)轉發到另一個 GraphQL API 來實現解析器的高階方式。

雖然 schema delegation 是一個強大而優雅的概念,但它最適合高階用例。為了使 Prisma 更靈活、更易於使用,我們引入了一種在您的應用程式中消費 Prisma API 的新方式:Prisma Client


Evolution of Prisma bindings


更多用例:構建 GraphQL 伺服器、REST API 等

新的 Prisma Client 與 Prisma bindings 具有相似的目的,但有三個主要區別:

  • 雖然 Prisma bindings 是為 GraphQL 伺服器設計的,但 Prisma Client 更靈活,可用於更多用例,例如 REST API、CLI、指令碼等。
  • Prisma Client 是 Prisma 工具鏈不可或缺的一部分:它prisma.yml 中配置,並透過 Prisma CLI 生成
  • Prisma Client 支援多種語言。今天的預覽版支援 JavaScript、TypeScript、Flow 和 Go!

我仍然可以在我的 GraphQL 伺服器上使用 Prisma bindings 嗎?

Prisma bindings 仍然是實現 GraphQL 解析器的一種強大方式,它透過委託底層 Prisma API 來實現。如果 Prisma bindings 適用於您當前的用例,則無需更改您的實現以使用新的 Prisma Client。


生成 Prisma Client

Prisma Client 是一個連線到您的 Prisma API 的庫。它根據您的 Prisma 資料模型自動生成,因此瞭解所有 API 操作和資料結構。

要生成 Prisma Client,您需要做兩件事:

  1. 在您的 prisma.yml 中指定新的 generate 屬性,例如:
  1. 在 Prisma CLI 中執行新的 prisma generate 命令。它從 prisma.yml 和您的資料模型中讀取資訊以生成 Prisma Client。請注意,這僅適用於 Prisma 1.17-beta 或更高版本。

上述程式碼演示瞭如何在 TypeScript 中生成客戶端;對於 JavaScript、Flow 和 Go,您可以對 generator 使用以下值:javascript-clientflow-clientgo-client

使用 Prisma Client API

Prisma Client API 根據您的資料模型生成,併為每個模型公開 CRUD 操作。

以下所有程式碼示例均基於以下資料模型:

您可以在此處檢視新 Prisma Client API 的完整文件。

匯入 Prisma Client 例項

生成後,您可以將 Prisma Client 例項匯入到您的程式碼中:

讀取資料

雖然 Prisma bindings 透過 query 欄位公開所有查詢,但查詢可以直接在生成的 Prisma Client 上呼叫:

這將返回所有返回的 User 物件的標量欄位。關係可以使用方法鏈(也稱為流暢 API)優雅地查詢:

請注意,上述程式碼片段仍然會導致對 Prisma API 的單次請求,然後由 Prisma 強大的查詢引擎針對資料庫進行解析。

使用新的 Prisma Client API,仍然可以使用 GraphQL 查詢巢狀資料或使用 schema delegation 處理高階用例。

文件中檢視更多示例。

寫入資料

就像查詢一樣,mutation 也直接在您的 Prisma Client 的頂層公開:

您還可以在單個事務中執行多個寫入操作:

文件中檢視更多示例。

無樣板程式碼:透過程式碼生成實現型別安全

Prisma Client 的一個核心優勢是型別安全。型別安全有助於提高生產力、更好的可維護性、更容易的重構,並帶來出色的開發人員體驗。

型別安全的資料訪問需要大量手動工作、編寫樣板程式碼和冗餘型別定義。Prisma Client 利用程式碼生成為資料模型和查詢提供自定義型別。


嘗試使用 Prisma Client

要了解有關 Prisma Client 的更多資訊,請檢視新的示例倉庫或遵循“開始使用”教程。請在 Slack 上告訴我們您的想法 🙌



開始使用

不要錯過下一篇文章!

訂閱 Prisma 新聞通訊

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