Learning
Zod

parse vs safeParse

Mikor dobjon kivételt a validáció és mikor adjon vissza eredmény objektumot; async variánsok.

parse – kivételt dob hiba esetén

import { z } from "zod"

const userSchema = z.object({
  name: z.string(),
  age: z.number(),
})

const user = userSchema.parse({ name: "Anna", age: 28 })
try {
  userSchema.parse({ name: "Anna", age: "huszonnyolc" })
} catch (error) {
  if (error instanceof z.ZodError) {
    console.log(error.issues)
  }
}

safeParse – hibát visszaad, nem dob kivételt

const result = userSchema.safeParse({ name: "Anna", age: "huszonnyolc" })

if (result.success) {
  console.log(result.data.name)
} else {
  console.log(result.error.issues)
}

Async validáció

const asyncSchema = z.string().refine(
  async (val) => {
    const exists = await checkUsernameInDb(val)
    return !exists
  },
  "Ez a felhasználónév már foglalt"
)

const result = await asyncSchema.safeParseAsync("newuser")

On this page