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

Prisma原子更新操作传入undefined报错,与TypeScript类型定义冲突

Prisma原子操作传undefined报错问题

问题本质

这是Prisma 2.28.0的类型定义与运行时校验不一致的bug,和数据库配置无关。TypeScript类型里IntFieldUpdateOperationsInput的increment等字段标记为可选(支持undefined),但实际运行时Prisma会拒绝这种参数。

临时解决办法

调用更新接口前,先把值为undefined的原子操作字段过滤掉,避免触发错误:

const someQuantity: number | undefined = undefined;
const client = new PrismaClient();

await client.someEntity.update({
  where: { id: 1 },
  data: {
    quantity: Object.fromEntries(
      // 只保留有有效值的操作
      Object.entries({ increment: someQuantity }).filter(([_, val]) => val !== undefined)
    )
  }
});

或者更直观的条件判断写法:

const updateOps: IntFieldUpdateOperationsInput = {};
if (someQuantity !== undefined) {
  updateOps.increment = someQuantity;
}

// 确保有合法操作才执行更新,避免空操作报错
if (Object.keys(updateOps).length > 0) {
  await client.someEntity.update({
    where: { id: 1 },
    data: { quantity: updateOps }
  });
}

后续建议

  • 优先考虑升级到Prisma 3.x及以上版本,这个问题在后续版本中已经被修复。
  • 如果无法升级,去Prisma官方GitHub仓库提交bug报告,说明你使用的版本、复现步骤,以及类型定义和运行时行为矛盾的点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:55:14