跳到主要内容

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