Open In App

How to Validate Data using joi Module in Node.js ?

Improve
Improve
Like Article
Like
Save
Share
Report

Joi module is a popular module for data validation. This module validates the data based on schemas. There are various functions like optional(), required(), min(), max(), etc which make it easy to use and a user-friendly module for validating the data.
Introduction: 
 

  1. It’s easy to get started and easy to use.
  2. It is widely used and popular module for data validation.
  3. It supports schema based validation.

Installation of joi module: 
 

  1. You can visit the link Install joi module. You can install this package by using this command. 
     
    npm install joi
  2. After installing multer you can check your joi version in command prompt using the command. 
     
    npm ls joi
  3. After that, you can just create a folder and add a file for example index.js, To run this file you need to run the following command. 
     
    node index.js
  4. Requiring module: You need to include joi module in your file by using these lines. 
     
    const Joi = require('joi');

Filename: index.js 
 

javascript




const Joi = require('joi')
  
//User-defined function to validate the user
function validateUser(user)
{
    const JoiSchema = Joi.object({
      
        username: Joi.string()
                  .min(5)
                  .max(30)
                  .required(),
                    
        email: Joi.string()
               .email()
               .min(5)
               .max(50)
               .optional(), 
                 
        date_of_birth: Joi.date()
                       .optional(),
                         
        account_status: Joi.string()
                        .valid('activated')
                        .valid('unactivated')
                        .optional(),
    }).options({ abortEarly: false });
  
    return JoiSchema.validate(user)
}
  
const user = {
    username: 'Pritish',
    email: 'pritish@gmail.com',
    date_of_birth: '2020-8-11',
    account_status: 'activated'
}
  
response = validateUser(user)
  
if(response.error)
{  
    console.log(response.error.details)
}
else
{
    console.log("Validated Data")
}


Note: In the above program abortEarly is set to false which makes sure that if there are multiple errors then all are displayed in the terminal. If it is set to true then the execution of the program will stop as soon as the first error is encountered and only that error will be displayed in the terminal.  

Steps to run the program: 
 

  1. The project structure will look like this:
  2. Make sure you have installed the joi module by using the following command: 
     
    npm install joi
  3. Run index.js file using below command: 
     
    node index.js
  4. Now, if no error occurs i.e. user data is validate, then following output will be produced:
  5. Now, if we validate the user against the invalid data as shown below, then the following output will be produced: 
     

javascript




var user = {
    username: 'GH',
    email: 'demo@',
    date_of_birth: '2020-20-48',
    account_status: 'abcd'
};


If abortEarly is set to true the following output will be produced :

So this is how you can validate data using joi module. There are other modules in the market for validation like express-validator, etc.
 



Last Updated : 15 Feb, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads