如何在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()),这意味着数据库会自动插入当前时间,完全不需要手动传递这个字段:
- 从
create.input.ts中移除createdAt字段的定义; - 表单提交时不再传递
createdAt参数:
return form.handler(() => createIssueGroup({ variables: { data: { ...data } } })),
这种方式能避免客户端时间不一致的问题,更可靠。
方案3:将时间戳转为ISO字符串
如果必须基于时间戳生成日期,可以把时间戳转为ISO格式的字符串:
createdAt: new Date(Date.now()).toISOString()
内容的提问来源于stack exchange,提问作者Mel
相关产品推荐
相关产品推荐

