You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Prisma $queryRaw的COUNT查询结果中提取数值?

解决Prisma $queryRaw执行COUNT查询后提取数值的问题

当使用Prisma的$queryRaw执行COUNT查询时,返回的结果是包含单个对象的数组,而非直接的数值。直接拼接字符串时,对象会被转为[object Object],可按以下方式提取目标数值:

方法1:给计数结果起别名(推荐)

给COUNT查询的结果指定别名,通过别名直接提取数值,这种方式不依赖数据库的默认列名,兼容性更好:

// 给COUNT结果起别名count
const rowCountResult = await prisma.$queryRaw`SELECT COUNT(1) AS count FROM MyTable;`;
// 取数组第一个元素的count属性
const rowCount = rowCountResult[0].count;
console.log('rowCount: ' + rowCount); // 输出123

方法2:使用数据库默认列名(不推荐)

如果不想起别名,可以直接访问数据库返回的默认列名,但不同数据库的默认列名可能不同(比如PostgreSQL默认是count,MySQL会保留COUNT(1)作为列名):

const rowCountResult = await prisma.$queryRaw`SELECT COUNT(1) FROM MyTable;`;
// 以MySQL为例,访问COUNT(1)对应的属性
const rowCount = rowCountResult[0]['COUNT(1)'];
console.log('rowCount: ' + rowCount);

TypeScript类型优化

避免使用any,可以定义类型约束返回结果,提升代码可读性:

type CountResult = { count: number };
const rowCountResult = await prisma.$queryRaw<CountResult[]>`SELECT COUNT(1) AS count FROM MyTable;`;
const rowCount = rowCountResult[0].count;

内容的提问来源于stack exchange,提问作者spacedog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:02:07