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

如何在Prisma ORM中不获取完整content而生成hasContent标识

Prisma查询时直接生成hasContent字段的实现方法

你可以通过以下两种方式实现,避免查询完整的content字段,直接在数据库层面生成hasContent:

方法一:使用原生SQL查询(完全匹配你需要的SQL逻辑)

直接用Prisma的$queryRaw执行原生SQL,精准控制查询逻辑,不会拉取完整的content内容:

const filters = { ... }; // 你的原有过滤条件

// 转换filters为SQL条件(支持动态过滤)
const whereClause = Prisma.sql`WHERE ${Prisma.filter(filters)}`;

const data = await prismaClient.$queryRaw`
  SELECT id, title, (CASE WHEN content IS NOT NULL AND content != '' THEN TRUE ELSE FALSE END) AS "hasContent"
  FROM "Article"
  ${whereClause}
`;

若无需动态过滤,可简化为:

const data = await prismaClient.$queryRaw`
  SELECT id, title, (CASE WHEN content IS NOT NULL AND content != '' THEN TRUE ELSE FALSE END) AS "hasContent"
  FROM "Article"
`;

方法二:使用Prisma计算字段(Prisma 4.16+版本支持)

从Prisma 4.16开始,支持在select中定义基于SQL表达式的计算字段,写法更贴合Prisma查询风格:

const filters = { ... };

const data = await prismaClient.article.findMany({
  where: filters,
  select: {
    id: true,
    title: true,
    hasContent: {
      $expr: Prisma.sql`content IS NOT NULL AND content != ''`
    }
  }
});

两种方式都会让数据库仅判断content是否非空且不为空字符串,不会返回完整content内容,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:42:32