如何正确使用Zod的isEmail验证器?
问题解决:Zod邮箱验证报错的修复方案
你报错的核心原因是用错了Zod的邮箱验证方法——Zod里没有isEmail()这个内置方法,正确的内置邮箱验证是email()。
修正后的代码如下:
.mutation("add", { input: z.object({ email: z.string().min(1).email(), // 替换isEmail()为email() }), async resolve({ ctx, input }) { let user = await prisma.subscriber.create({ data: { email: input.email, }, }); return { email: input.email }; }, });
额外说明
- 修正后,Zod会在GraphQL处理输入之前完成验证:如果输入的字符串不符合邮箱格式,或者长度小于1,会直接抛出验证错误,不会进入resolve函数执行数据库操作。
- 如果需要自定义邮箱验证规则(比如特定域名限制),可以用
refine()方法实现,示例:
email: z.string().min(1).refine( (val) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val), { message: "请输入有效的邮箱地址" } )
内容的提问来源于stack exchange,提问作者antonwilhelm
相关产品推荐
相关产品推荐

