2023 年 6 月 22 日

Prisma Client 擴展現已正式發佈

隨著 Prisma ORM 4.16.0 版本的發佈,Client 擴展 現已正式推出!這項新功能允許使用者擴展和自訂 Prisma Client,以滿足其個別的使用案例。

Prisma Client Extensions

客製化 Prisma Client 以滿足您程式碼庫的需求

4.7.0 版本中,我們發佈了 Prisma Client 擴展 作為預覽功能。今天,我們很高興宣佈 Prisma Client 擴展正式發佈!在預覽期間,擴展已被證明非常有用和強大,甚至為 Prisma 產品(如 AcceleratePulse!)提供支援!

簡單易用的 API

如果您是第一次聽說 Client 擴展,請別擔心。我們有一篇現有的部落格文章深入介紹了其用法。總而言之:建立擴展就像使用 $extends 一樣簡單。

此程式碼片段顯示了如何使用 model 擴展,將新方法新增至 User 模型

如果您需要在所有模型上使用方法,您甚至可以使用內建的 $allModels 功能

如需深入瞭解我們在此版本中對擴展 API 所做的變更,請查看我們的版本說明

社群建立的擴展

雖然 client 擴展現已正式發佈,但我們已經在實際應用中看到了一些很棒的範例。prisma-extension-pagination 是我們社群的傑出貢獻。匯入和使用外部 client 擴展也很容易

各種使用案例的參考範例

除了社群貢獻之外,我們在 prisma-client-extensions 範例儲存庫中也提供了一組參考範例,展示了我們認為 Prisma Client 擴展可以發揮作用的不同領域。該儲存庫目前包含以下範例擴展

範例描述
audit-log-context將目前使用者的 ID 作為上下文提供給 Postgres 稽核日誌觸發器
callback-free-itx新增一種方法來啟動互動式交易,而無需回呼
computed-fields將虛擬/計算欄位新增至結果物件
input-transformation轉換傳遞至 Prisma Client 查詢的輸入引數,以篩選結果集
input-validation對傳遞至 mutation 方法的輸入引數執行自訂驗證邏輯
instance-methods將類似 Active Record 的方法(如 save()delete())新增至結果物件
json-field-types對儲存在 JSON 欄位中的資料使用強型別執行階段剖析
model-filters新增可重複使用的篩選器,這些篩選器可以組合為模型的複雜 where 條件
obfuscated-fields防止敏感資料(例如密碼欄位)包含在結果中
query-logging使用簡單的查詢計時和日誌記錄來包裝 Prisma Client 查詢
readonly-client建立一個僅允許讀取操作的 client
retry-transactions使用指數退避和抖動為交易新增重試機制
row-level-security使用 Postgres 列層級安全性原則來隔離多租戶應用程式的資料
static-methods將自訂查詢方法新增至 Prisma Client 模型
transformed-fields示範如何使用結果擴展來轉換查詢結果,並將 i18n 新增至應用程式
exists-fn示範如何將 exists 方法新增至您的所有模型

炫耀您的擴展!

如果您想更深入地瞭解 Prisma Client 擴展,請務必查看我們之前的文章:Prisma Client 變得更加靈活:Prisma Client 擴展

我們也很樂意聽取有關您的擴展的資訊(甚至可能親身體驗一下)。

請務必在我們的 Discord 中展示您的 #MadeWithPrisma 作品

不要錯過下一篇文章!

訂閱 Prisma 電子報