DEV Community

Cover image for Adding Custom Validation in Mongoose Schemađź’ˇ
Rohit Yadav
Rohit Yadav

Posted on

Adding Custom Validation in Mongoose Schemađź’ˇ

Mongoose, the MongoDB Object Modeling tool for Node.js, provides a powerful and flexible way to define data schemas for your MongoDB collections. While Mongoose comes with built-in validators, there are times when you need to implement custom validation logic to ensure that your data meets specific requirements. In this blog post, we'll explore how to add custom validation to a Mongoose schema and understand the benefits it brings to your application.

Why Custom Validation?

Custom validation allows you to define and enforce rules beyond the standard validators provided by Mongoose. It empowers you to tailor validation logic according to your application's unique requirements, ensuring data integrity and preventing invalid or inconsistent data from being stored in the database.

Getting Started

Let's dive into a step-by-step guide on how to add custom validation to a Mongoose schema.

Step 1: Define a Mongoose Schema

First, let's create a simple Mongoose schema. In this example, we'll create a schema for a user with a custom validation rule for the age field.

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  username: {
    type: String,
    required: true,
  },
  age: {
    type: Number,
    validate: {
      validator: function (value) {
        // Custom validation logic goes here
        return value >= 18; // For example, require users to be 18 or older
      },
      message: 'User must be 18 or older',
    },
  },
});

const User = mongoose.model('User', userSchema);
Enter fullscreen mode Exit fullscreen mode

Step 2: Implement Custom Validation Logic

In the age field's validate property, you can define a custom validation function. This function should return true if the data is valid and false otherwise. In our example, the validation ensures that the user is 18 years or older.

Step 3: Use the Schema in Your Application

Now that you've defined your schema with custom validation, you can use it in your application to create and save documents.

const newUser = new User({
  username: 'JohnDoe',
  age: 20,
});

newUser.save()
  .then(() => {
    console.log('User saved successfully');
  })
  .catch((err) => {
    console.error(`Error saving user: ${err.message}`);
  });
Enter fullscreen mode Exit fullscreen mode

If the age provided is less than 18, the save operation will fail, and an error message will be logged.

Benefits of Custom Validation

  1. Tailored Rules: You can enforce business-specific rules that go beyond standard validation, ensuring data consistency based on your application's requirements.

  2. Improved Data Quality: Custom validation helps maintain a higher standard of data quality by preventing the insertion of invalid or inconsistent data.

  3. Code Reusability: Once you define custom validation logic, you can reuse it across multiple schemas, promoting a consistent approach to data validation in your application.

In conclusion, adding custom validation to your Mongoose schemas allows you to enhance the integrity and quality of your data. By tailoring validation rules to your application's needs, you ensure that your MongoDB collections contain reliable and meaningful information.

Top comments (2)

Collapse
 
abhilaksharora profile image
abhilaksh-arora

Nice! Quite informative blog.

Collapse
 
rohitnirban profile image
Rohit Yadav

Thanks, abhilaksh!