跳到主要內容

`client`:為 Prisma Client 新增方法

資訊

Prisma Client 擴充功能從 4.16.0 及更高版本起正式發布。它們在 4.7.0 版本中以預覽形式推出。如果您執行的版本早於 4.16.0,請務必啟用 clientExtensions 預覽功能標誌。

您可以使用 client Prisma Client 擴充功能組件,將頂層方法新增至 Prisma Client。

擴充 Prisma Client

使用 $extends 用戶端層級方法來建立擴充用戶端。擴充用戶端是標準 Prisma Client 的變體,由一個或多個擴充功能包裝。使用 client 擴充功能組件,將頂層方法新增至 Prisma Client。

若要將頂層方法新增至 Prisma Client,請使用以下結構

const prisma = new PrismaClient().$extends({
client?: { ... }
})

範例

以下範例使用 client 組件將兩個方法新增至 Prisma Client

  • $log 輸出訊息。
  • $totalQueries 傳回目前用戶端實例執行的查詢數量。它使用指標功能來收集此資訊。
資訊

若要在您的專案中使用指標,您必須在 schema.prisma 檔案的 generator 區塊中啟用 metrics 功能標誌。了解更多

const prisma = new PrismaClient().$extends({
client: {
$log: (s: string) => console.log(s),
async $totalQueries() {
const index_prisma_client_queries_total = 0
// Prisma.getExtensionContext(this) in the following block
// returns the current client instance
const metricsCounters = await (
await Prisma.getExtensionContext(this).$metrics.json()
).counters

return metricsCounters[index_prisma_client_queries_total].value
},
},
})

async function main() {
prisma.$log('Hello world')
const totalQueries = await prisma.$totalQueries()
console.log(totalQueries)
}