乐闻世界logo
搜索文章和话题

How to set limit for array size in Mongoose schema

1个答案

1

In Mongoose, you can set array size limits for arrays by using the minlength and maxlength validators in the schema definition. These validators are specifically designed for validating the length of arrays, in addition to numeric fields.

Here is an example demonstrating how to set minimum and maximum length limits for an array field in a Mongoose schema:

javascript
const mongoose = require('mongoose'); const mySchema = new mongoose.Schema({ // Define a string array with length restrictions tags: { type: [String], // Minimum length restriction validate: { validator: function(v) { return v.length >= 2; // At least 2 elements }, message: props => `At least ${props.value.length} tags are required.` }, // Maximum length restriction validate: { validator: function(v) { return v.length <= 5; // At most 5 elements }, message: props => `At most ${props.value.length} tags are allowed.` } } }); const MyModel = mongoose.model('MyModel', mySchema);

In this example, the tags field is a string array. The minimum length is set to 2 and the maximum length is set to 5. This is achieved by adding custom validation functions to the validate property of the schema field definition. If the tags array in an inserted or updated document does not meet the length restrictions, Mongoose will provide the corresponding error message.

Besides using custom validation functions, you can also leverage Mongoose's built-in minlength and maxlength validators for a more concise implementation:

javascript
const mySchema = new mongoose.Schema({ tags: { type: [String], minlength: [2, 'At least 2 tags are required.'], // Minimum length maxlength: [5, 'At most 5 tags are allowed.'] // Maximum length } });

In this example, the minlength and maxlength properties restrict the array length while providing custom error messages. This approach is more efficient and directly utilizes Mongoose's built-in validation capabilities.

2024年6月29日 12:07 回复

你的答案