Field-level validation
You can enable field-level validation in your model schema by chaining a validate
function to the field.
Examples
amplify/data/resource.ts
const schema = a.schema({ Todo: a.model({ content: a.string().validate(v => v .minLength(1, 'Content must be at least 1 character long') .maxLength(100, 'Content must be less than 100 characters') .matches('^[a-zA-Z0-9\\\\s]+$', 'Content must contain only letters, numbers, and spaces') ) }) .authorization(allow => [allow.publicApiKey()])});
Supported validators
String Validators
For string
fields:
Validator | Description | Parameters | Example |
---|---|---|---|
minLength | Validates that a string field has at least the specified length | • length : The minimum length required• errorMessage : Optional custom error message | a.string().validate(v => v.minLength(5, 'String must be at least 5 characters')) |
maxLength | Validates that a string field does not exceed the specified length | • length : The maximum length allowed• errorMessage : Optional custom error message | a.string().validate(v => v.maxLength(100, 'String must be at most 100 characters')) |
startsWith | Validates that a string field starts with the specified prefix | • prefix : The prefix the string must start with• errorMessage : Optional custom error message | a.string().validate(v => v.startsWith("prefix-", 'String must start with prefix-')) |
endsWith | Validates that a string field ends with the specified suffix | • suffix : The suffix the string must end with• errorMessage : Optional custom error message | a.string().validate(v => v.endsWith("-suffix", 'String must end with -suffix')) |
matches | Validates that a string field matches the specified regex pattern using the Java regex engine. See notes below. | • pattern : The regex pattern the string must match• errorMessage : Optional custom error message | a.string().validate(v => v.matches("^[a-zA-Z0-9]+$", 'String must match the pattern')) |
Numeric Validators
For integer
and float
fields:
Validator | Description | Parameters | Example |
---|---|---|---|
gt | Validates that a numeric field is greater than the specified value | • value : The value the field must be greater than• errorMessage : Optional custom error message | a.integer().validate(v => v.gt(10, 'Must be greater than 10')) |
gte | Validates that a numeric field is greater than or equal to the specified value | • value : The value the field must be greater than or equal to• errorMessage : Optional custom error message | a.integer().validate(v => v.gte(10, 'Must be at least 10')) |
lt | Validates that a numeric field is less than the specified value | • value : The value the field must be less than• errorMessage : Optional custom error message | a.integer().validate(v => v.lt(10, 'Must be less than 10')) |
lte | Validates that a numeric field is less than or equal to the specified value | • value : The value the field must be less than or equal to• errorMessage : Optional custom error message | a.integer().validate(v => v.lte(10, 'Must be at most 10')) |
positive | Validates that a numeric field is positive | • errorMessage : Optional custom error message | a.integer().validate(v => v.positive('Must be positive')) |
negative | Validates that a numeric field is negative | • errorMessage : Optional custom error message | a.integer().validate(v => v.negative('Must be negative')) |