我有一个 nuxt 应用程序,它使用 prisma 将记录保存在 mysql 数据库中。
在我的棱镜模式中
memberSince DateTime @db.Date
匹配 mysql 中 DATETIME 类型的列
在我的前端表单中
<UFormGroup class="" label="Membre depuis" name="memberSince">
<UInput v-model="state.memberSince" type="date" />
</UFormGroup>
并且使用 zod,
const schema = z.object({
...
memberSince: z.coerce.date(),
}
提交功能如下
async function onSubmit(event: FormSubmitEvent<any>) {
console.log(schema.safeParse(event.data));
personsStore.addPerson(toRaw(event.data))
}
控制台显示这个
Object { ....., memberSince: "2023-12-08", .....} 点是 其他属性的占位符
后端抱怨说memberSince应该是一个ISO-8601字符串。 我已经奋斗了几个小时,但我确实找到了如何获取或制作这个 iso 字符串。 我需要一些帮助。
我终于找到了这个解决方案。也许它不是最好的,但它有效!
import {PrismaClient} from "@prisma/client"
const prisma = new PrismaClient()
export default defineEventHandler(async (event) => {
const body = await readBody(event)
console.log('in backend create person')
let persons
/////////////////////////////////////////////////
let memberSince =new Date(body.memberSince)
await prisma.person.create({
data:{
firstName: body.firstName,
lastName: body.lastName,
email: body.email,
phone: body.phone,
///////////////////////////////////////////////////
memberSince: memberSince,
memberLastYear: body.memberLastYear
}
}).then(async ()=>{
await prisma.person.findMany()
.then((response) =>{
persons=response
})
})
.catch((error)=>{
console.log(error.message)
return {"error":"there was an error"}
})
return{ persons}
})
解中涉及的线是斜线下面的线