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

如何将导入函数返回的字符串传入Prisma Create对象存入数据库

解决Prisma Create传入函数返回值的类型错误问题

首先纠正你代码里的明显笔误:payloadTwo和payload都取了data[0],应该改成data[1],不然拼接结果会重复。

接下来解决核心的TypeScript类型错误问题:

问题根源

Prisma的cadPayload.create方法要求data参数必须符合自动生成的cadPayloadCreateInput类型(对应你schema.prisma里定义的模型结构),而你的mappingPayload直接返回字符串,或者你错误地将字符串赋值给了模型中不存在的dataJir字段,导致TypeScript校验失败。

具体解决方案

1. 确认Prisma模型结构

先检查你的schema.prisma里的cadPayload模型,比如如果模型定义是这样的:

model cadPayload {
  id    Int     @id @default(autoincrement())
  content String // 存储拼接字符串的字段
}

那cadPayloadCreateInput只接受包含content字段的对象,不能直接传字符串,也不能用模型里没有的字段(比如dataJir)。

2. 修改mappingPayload返回符合类型的对象

让函数返回包含模型字段的对象,而不是单纯的字符串:

// 给data指定具体类型,避免any
const mappingPayload = (data: [string, string]) => {
  const payload = data[0]
  const payloadTwo = data[1] // 修正索引错误
  const payRes = `${payloadTwo},
${payload}`
  // 返回符合Prisma输入类型的对象,字段名对应模型定义
  return { content: payRes }
}

3. 正确调用Prisma Create

直接将函数返回的对象传入data参数:

await db.cadPayload.create({
  data: mappingPayload(['Hello', 'You'])
})

如果你确实需要用dataJir字段

如果业务逻辑需要用dataJir作为字段名,必须先在schema.prisma中添加该字段,再重新生成Prisma客户端:

model cadPayload {
  id    Int     @id @default(autoincrement())
  dataJir String // 添加目标字段
}

执行命令重新生成客户端:

npx prisma generate

之后修改mappingPayload返回{ dataJir: payRes },再调用Create就不会报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:40:12