tRPC是否支持部分参数的验证以确保更新只传入必要的参数?

tRPC 一般是使用z.object()来进行参数验证的。

举例:

interface Proj {
  id: number,
  projName: string,
  desc?: string
}


export const projUpdate = publicProcedure.input(
  z.object({
    id: z.number(),
    projName: z.string(),
    desc: z.string()
  })
).mutation(({ input: {id, projName, desc} }) => {
  dataBase.getRepository(Proj).createQueryBuilder('proj').where('proj.id = :id', {id: id}).update({
    projName: projName,
    desc: desc
  })
})

现在有一个需求问题:
1、请问是否是可以进行类型Proj验证呢?因为更新实例Proj,我们一般传输部分参数为:Partial<Proj>即可,但是这里是:
全验证:

z.object({
    id: z.number(),
    projName: z.string(),
    desc: z.string()
  })

2、表现:使用时候报错:

export const addProj = async(proj: Proj) => {
  return await trpc.projCreate.mutate(proj)  // 这里报错
}

image.png

请问是否可以进行Partial 可选参数传入更新呢?

阅读 449
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏