zod - 检查任何对象属性是否通过验证

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

我有这样的架构:

z.object({
  name: z.string().min(3),
  email: z.string().min(3),
})

但是如果这两个属性中至少有一个通过验证,我想让它通过验证。我想做:

z.object({
  name: z.string().min(3),
  email: z.string().min(3),
}).refine((res) => res.name || res.email)

但是如果任何对象属性失败,仍然会出现错误,并且在细化中,我实际上没有检查

name
email
的验证是否通过,但我只检查它们是否已定义。如何使用
zod
让它变得漂亮?

javascript zod
1个回答
0
投票

更新您的架构如下:

z.object({
  name: z.string().min(3),
  email: z.string().min(3),
}).or(
  z.object({
    name: z.string().min(3),
  }),
  z.object({
    email: z.string().min(3),
  }),
);

您可以了解更多这里

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