mf-mongoose-validation
Version:
Validate extended data types, field lengths, arrays, optional values, and the like.
114 lines (87 loc) • 4.3 kB
Markdown
Validate extended data types, field lengths, arrays, optional values, and the like.
npm install --save mf-mongoose-validation
Additional validation function for primitive data types in Mongoose are:
| Parameter | Type | Explanation |
|------------------|---------|------------------|
|`validChars` | String | Array of allowable characters in value |
|`isCaseSensitive` | Boolean | Determines if the `validChars` are case sensitive |
|`minLength` | Number | Minimum length of value **if a value is supplied** and after it is optionally trimmed. |
|`maxLength` | Number | Maximum length of value **if a value is supplied** and after it is optionally trimmed. |
| Parameter | Type | Explanation |
|-----------------|---------|------------------|
|`minQty ` | Number | Minimum item count after any soft deletes (see [mf-mongoose-softdelete](https://github.com/MEANFactory/mf-mongoose-softdelete)) |
|`maxQty ` | Number | Maximum item count after any soft deletes (see [mf-mongoose-softdelete](https://github.com/MEANFactory/mf-mongoose-softdelete)) |
## Example #1: Primitives ##
Note the uppercase **L** in **Length** used in the plugin. The built-in Mongoose validator is `minlength` or `maxlength` with all **lowercase** letters.
### Schema ###
```
var mongoose = require('mongoose'),
mfValidate = require('mf-mongoose-validation'),
enums = require('../enums');
var ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var DIGITS = '0123456789';
var NAME_CHARS = ALPHA + ' ';
var personSchema = mongoose.Schema({
ssn : {
type : String,
validChars : DIGITS,
minLength : 9, // plugin version to leverage pleasant error messages
maxLength : 9, // plugin version to leverage pleasant error messages
trim : true,
required : true,
},
firstName : {
type : String,
validChars : NAME_CHARS,
isCaseSensitive : false,
trim : true,
minLength : 1, // will only apply if a value is supplied
maxLength : 50 // will only apply if a value is supplied
}
lastName : {
type : String,
validChars : NAME_CHARS,
isCaseSensitive : false, // do not consider case when comparing valid characters
minLength : 2,
maxLength : 50
},
});
personSchema.plugin(mfValidate);
module.exports = mongoose.model('Person', personSchema);
```
```
var personSchema = mongoose.Schema({
name: { type: String }
});
var familySchema = mongoose.Schema({
surname : { type: String },
members : {
type : [ personSchema ],
minQty : 1,
maxQty : 100
}
});
familySchema.plugin(mfValidate);
module.exports = mongoose.model('Family', familySchema.plugin);
```
The following projects have been designed specifically to work with each other:
Track who and when documents are created and updated without complex programming. Compare and contract different versions of each document.
Convert to/from JSON DTO while applying optional level-based hiding.
Increase data integrity by retaining historical data and preventing data from being permanently deleted. Each `delete` operation causes the document to be marked as "deleted" and subsequently hidden from result sets.
Provides additional validation for extended data types, field lengths, arrays, and other useful features.
MEAN Factory
[](mailto:support@meanfactory.com)
[](http://www.MEANFactory.com)