client
:为 Prisma Client 添加方法
信息
Prisma Client 扩展在 4.16.0 及更高版本中已正式发布 (Generally Available)。它们在 4.7.0 版本中作为预览功能引入 (Preview)。如果您运行的版本低于 4.16.0,请确保启用 clientExtensions
预览功能标志 (Preview feature flag)。
您可以使用 client
Prisma Client 扩展组件向 Prisma Client 添加顶级方法。
扩展 Prisma Client
使用 $extends
client-level 方法创建 extended client(扩展客户端)。Extended client 是标准 Prisma Client 的一个变体,它由一个或多个扩展包裹。使用 client
扩展组件向 Prisma Client 添加顶级方法。
要向 Prisma Client 添加顶级方法,请使用以下结构
const prisma = new PrismaClient().$extends({
client?: { ... }
})
示例
以下示例使用 client
组件向 Prisma Client 添加了两个方法
$log
输出一条消息。$totalQueries
返回当前客户端实例执行的查询数量。它使用 metrics(指标)功能收集此信息。
信息
要在项目中使 metrics(指标)功能,必须在 schema.prisma
文件的 generator
block(生成器块)中启用 metrics
功能标志(feature flag)。了解更多。
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)
}