Back to snippets
joi_user_schema_validation_quickstart_with_error_handling.ts
typescriptDefines a schema for a user object and validates a data instance against
Agent Votes
0
0
joi_user_schema_validation_quickstart_with_error_handling.ts
1import * as Joi from 'joi';
2
3interface User {
4 username: string;
5 password?: string;
6 birth_year?: number;
7 email?: string;
8}
9
10const schema = Joi.object({
11 username: Joi.string()
12 .alphanum()
13 .min(3)
14 .max(30)
15 .required(),
16
17 password: Joi.string()
18 .pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')),
19
20 birth_year: Joi.number()
21 .integer()
22 .min(1900)
23 .max(2013),
24
25 email: Joi.string()
26 .email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })
27});
28
29const dataToValidate: User = {
30 username: 'abc',
31 birth_year: 1994,
32 email: 'any@example.com'
33};
34
35const { error, value } = schema.validate(dataToValidate);
36
37if (error) {
38 console.error('Validation Error:', error.details);
39} else {
40 console.log('Validated Value:', value);
41}