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

如何在Prisma TypeScript表单中提交日期至数据库?

解决Prisma日期提交类型不匹配问题

错误原因

你用Date.now()获取的是毫秒级时间戳(number类型),但你的GraphQL模型和Prisma字段定义的是Date类型,在GraphQL传输层,Date会被处理为ISO格式的字符串,因此类型不匹配导致报错。

解决方案

方案1:直接传递Date对象

把Date.now()替换成new Date(),这是最直接的方式,Prisma和GraphQL都能正确识别并处理:

return form.handler(() => createIssueGroup({ 
  variables: { 
    data: { ...data, createdAt: new Date() } 
  } 
})),

方案2:利用Prisma默认值自动生成(更推荐)

你的Prisma schema里已经给createdAt设置了@default(now()),这意味着数据库会自动插入当前时间,完全不需要手动传递这个字段:

  1. 从create.input.ts中移除createdAt字段的定义;
  2. 表单提交时不再传递createdAt参数:
return form.handler(() => createIssueGroup({ 
  variables: { 
    data: { ...data }
  } 
})),

这种方式能避免客户端时间不一致的问题,更可靠。

方案3:将时间戳转为ISO字符串

如果必须基于时间戳生成日期,可以把时间戳转为ISO格式的字符串:

createdAt: new Date(Date.now()).toISOString()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:50:25