Validate
What is schema.Validate()?
To validate your data you can use the schema.Validate()
function. The function signature looks like this:
schema.Validate(dataPointer, options...)
This works with any Zog Schema:
// string
data := "test"
z.String().Min(3).Validate(&data)
// structs
user := User{Name: "test"}
z.Struct(z.Schema{"name": z.String().Min(3)}).Validate(&user)
Required and Zero Values
One quirk of schema.Validate()
is that it will consider zero values as invalid if the schema is required. For example:
var data int
z.Int().Required().Validate(&data) // Error: int is required
data = 0
z.Int().Required().Validate(&data) // Error: int is required
To fix this you can use a pointer:
var data *int
z.Ptr(z.Int()).NotNil().Validate(&data) // Error: pointer is nil
*data = 0
z.Ptr(z.Int()).NotNil().Validate(&data) // No error