`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)
}