Pragmatic validation for Node.js
const {
SchemaValidator,
isEmail,
isString,
isStrongPassword,
isPhone,
isOptional,
Validation,
ValidationError
} = require('correct')
// Custom validator example:
const msg = 'Occupation must contain software.'
const mustContainSoftware = occupation => (
new Validation(occupation.toLowerCase().includes('software') || msg)
)
// Create the validator.
const registrationValidator = new SchemaValidator({
email: { isEmail },
name: { isString },
password: { isStrongPassword, message: 'Your password must be stronger.' },
occupation: { mustContainSoftware },
phone: { isPhone, isOptional, name: 'telephone number' }
})
try {
// Validate the input.
await registrationValidator.validate(req.body).orThrow()
// Continue to do something here.
} catch (error) {
if (error instanceof ValidationError) {
// If the error is a ValidationError, respond with the invalid results.
res.status(400).json(error.feedback)
} else {
res.status(500).end()
}
}
{
"email": "hahahaha",
"name": "",
"password": "qwerty",
"occupation": "CEO",
"phone": "777"
}
{
email: ['A valid email address is required.'],
name: ['Name is required.'],
password: ['Your password must be stronger.'],
occupation: ['Occupation must contain software.'],
phone: ['A valid telephone number is required.']
}
Name | Descriptionn |
---|---|
isString | Validates whether input is a String. |
Name | Descriptionn |
---|---|
isTimestamp | Validates whether input is a valid ISO8601 timestamp. |
| Valid example: '2018-01-01T00:00:00.000Z' |
isEmail | Validates whether input is a valid email address. | | Valid example: sharonjones@hotmail.com | | Invalid example: ting#fastmail.com | isPhone | Validates whether input is a valid phone number. | isStrongPassword | Validates whether input is a strong (has a score of 3 or 4) | | password using zxcvbn | | Valid example: 'Dmbu5bc5yeCRwsRD' | | Invalid example: 'qwerty' | isUrl | Validates whether input is a valid URL. | isZip | Validates wehther input is a valid zip code. |
Name | Description |
---|---|
name | Allows you to customize the name of the field as it appears in |
| the error message. If this is not specified, the error message |
| will use a default specified by the validator used or the object |
| key. |
message | Allows you to set the error message. | isOptional | Allows you to mark the field as optional/not required. |
Hippocratic License - See LICENSE
Created by Ian Walter