跳到主要内容

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