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

Prisma创建Schedule模型时latlong字段类型不匹配报错及修改方案咨询

解决Prisma创建Schedule时的类型不匹配报错

这个报错的原因非常明确:你的Schedule模型里latlong字段定义的是BigInt类型,但你传入的data中latlong的值是一个空对象{}(属于JSON类型),两者类型不匹配,所以Prisma抛出了这个错误。

你确实需要针对性调整来解决这个问题,具体分两种业务场景处理:

场景1:模型定义正确(latlong确实需要存BigInt)

如果业务上latlong字段就是用来存储单个BigInt值(比如编码后的坐标值),那你需要确保传入的latlong是合法的BigInt类型:

  • 先检查调用create方法时传入的data,确认latlong的值不是对象,而是可以转换为BigInt的类型(比如数字、数字格式的字符串)
  • 在你的create方法中添加类型转换逻辑,确保传递给Prisma的是BigInt:
async create(data: Prisma.ScheduleCreateInput) {
  // 处理latlong的类型转换,避免传入非BigInt值
  if (data.latlong !== undefined) {
    // 这里根据实际传入的类型调整,比如字符串/数字都可以转成BigInt
    data.latlong = BigInt(data.latlong);
  }
  
  await this.prismaService.schedule.create({ data });
  return RESPONSE_MESSAGE.SCHEDULE_SUCCESS;
}

场景2:模型定义错误(实际需要存储经纬度对象)

如果你的latlong字段本来是要存储类似{lat: 12.34, lng: 56.78}这样的经纬度对象,那说明你的模型定义错了,需要调整Prisma Schema:

  1. 修改Schedule模型中的latlong字段类型为Json:
latlong Json @map("ez05_invsche_latlong")
  1. 运行prisma generate命令更新Prisma客户端
  2. 之后再传入JSON对象作为latlong的值就不会报错了

关键提示

先明确你的业务需求:latlong字段到底要存储什么数据?是单个BigInt编码值,还是经纬度的JSON结构?这是选择哪种解决方案的核心依据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:07:32