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")