Ali
Ali

Reputation: 69

How can I define a field with a range of data in mongoose schema?

My current Mongoose Schema is this:

const mongoose = require('mongoose');
const resultSchema = new mongoose.Schema({
    scores: { type: Number, required: true },
    analysis: { type: String, required: true }
},
    { timestamps: true, toJSON: { virtuals: true } }
);
module.exports = mongoose.model('Result', resultSchema);

And I want that scores field has a range of numbers. For example 100 to 500.

What should I do?


Meanwhile, Can I use MongoDB operator in Mongoose?

Upvotes: 4

Views: 2378

Answers (1)

Daksh
Daksh

Reputation: 986

Mongoose has several built-in validators to satisfy exactly this use case.

Since scores is of type Number, you can use the min and max validators to validate a range in this manner:

const mongoose = require('mongoose');
const resultSchema = new mongoose.Schema({
    scores: {
        type: Number,
        required: true,
        min: 100,
        max: 500
    },
    analysis: {
        type: String,
        required: true
    }
}, { timestamps: true, toJSON: { virtuals: true } });
module.exports = mongoose.model('Result', resultSchema);

You can read about validation in Mongoose: https://mongoosejs.com/docs/validation.html

Upvotes: 7

Related Questions