客製化 Prisma Client 以滿足您程式碼庫的需求
在 4.7.0 版本中,我們發佈了 Prisma Client 擴展 作為預覽功能。今天,我們很高興宣佈 Prisma Client 擴展正式發佈!在預覽期間,擴展已被證明非常有用和強大,甚至為 Prisma 產品(如 Accelerate 和 Pulse!)提供支援!
簡單易用的 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 電子報