如何在 Zod 元组上添加自定义消息?

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

我想在 Zod 元组上返回自定义消息。我没有找到任何方法可以做到这一点。

返回信息:数组必须至少包含4个元素

代码:

z.tuple([
    z.enum(),
    z.number(),
    z.string(),
    z.array(),
],
    { message: "Needs to be an array." })
    //.refine, .min, .length will not work here

我尝试过的

  • 没有 .min、.length 参数来解决问题
  • .refine 不会被调用——其他东西会首先调用该消息
javascript typescript express zod
1个回答
0
投票

您可以使用 params 中的

errorMap
属性自定义错误消息。请阅读文档此处

以下是您的代码的操作方法:

z.tuple([
  z.enum(),
  z.number(),
  z.string(),
  z.array(),
], {
  errorMap: (issue, ctx) => {
    // for too_small 
    if (issue.code === z.ZodIssueCode.too_small) {
      return { message: "Missing values in tuple" };
    }

    // default message for other errors
    return { message: ctx.defaultError };
  }
})

zod 问题代码列表.

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