跳至主要内容

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