作用:保证保存文档时,可以按照Schema设置的字段进行设置,即文档限制只能在 Schema上 。
1.1【required】:数据必填
//将name设置为必填字段,如果没有name字段,文档将不被保存,且出现错误提示const mongoose = require('mongoose')mongoose.connect('mongodb://localhost:27017/student')var Schema =new mongoose.Schema({name:{type:String,required:true},age:Number})var stuModel = mongoose.model('students', Schema);new stuModel({age:20}).save((err,doc)=>{if(err){return console.log(err)}console.log(doc)})//报错:name: Path `name` is required.
1.2【default】:默认值
//设置age字段的默认值为18,如果不设置age字段,则会取默认值const mongoose = require('mongoose')mongoose.connect('mongodb://localhost:27017/student')var Schema =new mongoose.Schema({name:String,age:{type:Number,default:18}})var stuModel = mongoose.model('students', Schema);new stuModel({name:'李雷'}).save((err,doc)=>{if(err){return console.log(err)}console.log(doc)})//{ age: 18, _id: 6018f3bd7e51343e6c4f212b, name: '李雷', __v: 0 }
1.3【min】【max】:最小/大值
- 只适用于数字 ```javascript //将age的取值范围设置为[0,10]。如果age取值为20,文档将不被保存,且出现错误提示 const mongoose = require(‘mongoose’) mongoose.connect(‘mongodb://localhost:27017/student’) var Schema =new mongoose.Schema({ name:String, age:{ type:Number, min:10, max:18 } }) var stuModel = mongoose.model(‘students’, Schema); new stuModel({name:’李雷’,age:20}).save((err,doc)=>{ if(err){ return console.log(err) } console.log(doc) })
//age: Path age (20) is more than maximum allowed value (18).
<a name="qAESl"></a>### 1.4【match】:正则匹配- 只适用于字符串```javascript//将name的match设置为必须存在'01'字符。如果name不存在'01',文档将不被保存,且出现错误提示const mongoose = require('mongoose')mongoose.connect('mongodb://localhost:27017/student')var Schema =new mongoose.Schema({name:{type:String,match:/01/},age:Number,})var stuModel = mongoose.model('students', Schema);new stuModel({name:'李雷',age:20}).save((err,doc)=>{if(err){return console.log(err)}console.log(doc)})//name: Path `name` is invalid (李雷).
1.5【enum】:枚举匹配
- 只适用于字符串 ```javascript //将name的枚举取值设置为[‘zs’,’ls’,’ww’],如果name不在枚举范围内取值,文档将不被保存,且出现错误提示 const mongoose = require(‘mongoose’) mongoose.connect(‘mongodb://localhost:27017/student’) var Schema =new mongoose.Schema({ name:{type:String,enum:[‘zs’,’ls’,’ww’]}, age:Number, }) var stuModel = mongoose.model(‘students’, Schema); new stuModel({name:’lss’,age:20}).save((err,doc)=>{ if(err){ return console.log(err) } console.log(doc) })
//name: ValidatorError: lss is not a valid enum value for path name.
<a name="Ru6lc"></a>### 1.6【validate】:自定义匹配- `validate`实际上是一个函数,函数的参数代表当前字段,返回`true`表示通过验证,返回`false`表示未通过验证。```javascript//定义名字name的长度必须在4个字符以上const mongoose = require('mongoose')mongoose.connect('mongodb://localhost:27017/student')var Schema =new mongoose.Schema({name:{type:String,validate:nameLength},age:Number,})var stuModel = mongoose.model('students', Schema);new stuModel({name:'abcd',age:20}).save((err,doc)=>{if(err){return console.log(err)}console.log(doc)})function nameLength(arg){if(arg.length>4){return true}return false}//name: Validator failed for path `name` with value `abcd`
