You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Zod的refine实现自定义校验,拦截'nill'值并返回指定错误?

Zod 自定义校验:处理下拉框'nill'选项的必填提示

你的核心需求是排除下拉框中值为'nill'的选项,同时返回指定错误提示。由于'nill'是长度合法的字符串,原来的min(1)校验无法识别它,这时候用Zod的refine方法就能轻松实现自定义校验逻辑。

修改后的Zod Schema

直接在原有的字符串校验后追加refine即可:

const shopSchema = z.object({
  categoryId: z.string()
    // 保留原有的空字符串校验(可选,根据你的需求)
    .min(1, 'Shop category is required!')
    // 添加自定义校验,排除'nill'值
    .refine(value => value !== 'nill', {
      message: 'Shop category is required!'
    })
});

代码说明

  • refine的第一个参数是校验函数:传入字段值,返回true表示校验通过,返回false则触发错误。这里判断值不等于'nill'才允许通过。
  • 第二个参数是配置对象,通过message指定你想要的错误提示文本。

如果你的下拉框不会出现空字符串(只有有效分类值和'nill'),也可以去掉.min(1)的校验,直接保留refine部分即可。

内容的提问来源于stack exchange,提问作者Being47

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 06:27:05