如何让 nuxtui 日期输入生成 ISO 日期字符串?

问题描述 投票:0回答:1

我有一个 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 字符串。 我需要一些帮助。

nuxt.js prisma zod
1个回答
0
投票

我终于找到了这个解决方案。也许它不是最好的,但它有效!

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}
})

解中涉及的线是斜线下面的线

© www.soinside.com 2019 - 2024. All rights reserved.