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:
- 修改
Schedule模型中的latlong字段类型为Json:
latlong Json @map("ez05_invsche_latlong")
- 运行
prisma generate命令更新Prisma客户端 - 之后再传入JSON对象作为
latlong的值就不会报错了
关键提示
先明确你的业务需求:latlong字段到底要存储什么数据?是单个BigInt编码值,还是经纬度的JSON结构?这是选择哪种解决方案的核心依据。
内容的提问来源于stack exchange,提问作者Srisanthiya
相关产品推荐
相关产品推荐

