joi validation custom message in node

const Joi = require('joi');

const schema = Joi.object({
  username: Joi.string().alphanum().min(3).max(30)
    .required()
    .messages({
      'string.base': 'Username should be a string',
      'string.alphanum': 'Username should only contain alphanumeric characters',
      'string.min': 'Username should have at least {#limit} characters',
      'string.max': 'Username should not exceed {#limit} characters',
      'any.required': 'Username is required'
    }),

  email: Joi.string().email({ tlds: { allow: false } })
    .required()
    .messages({
      'string.base': 'Email should be a valid string',
      'string.email': 'Email should be a valid email address',
      'any.required': 'Email is required'
    }),

  password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$'))
    .required()
    .messages({
      'string.base': 'Password should be a valid string',
      'string.pattern.base': 'Password should be alphanumeric and between 3 to 30 characters',
      'any.required': 'Password is required'
    })
});

const data = {
  username: 'john_doe',
  email: '[email protected]',
  password: 'pass123'
};

const { error, value } = schema.validate(data);

if (error) {
  console.error(error.message);
} else {
  console.log('Validation successful:', value);
}