`client`:向 Prisma Client 新增方法
資訊
Prisma Client 擴充套件在 4.16.0 及更高版本中已正式釋出 (GA)。它們在 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)
}