Mongoose 数据校验
一、Mongoose 校验参数
required : 表示这个数据必须传入
max: 用于 Number 类型数据,最大值
min: 用于 Number 类型数据,最小值
enum:枚举类型,要求数据必须满足枚举值 enum: ['0', '1', '2']
match:增加的数据必须符合 match(正则)的规则
maxlength:最大值
minlength:最小值
var UserSchema = new mongoose.Schema({ name: { type: String, required: true, }, age: { type: Number, // 是否必须的校验器 required: true, // 数字类型的最大值校验器 max: 120, // 数字类型的最小值校验器 min: 0 }, status: { type: String, // 设置字符串的可选值 enum: ['0', '1', '2'] }, phone: { type: Number, match: /^\d{11}$/ }, desc: { type: String, maxlength: 20, minlength: 10 } });
二、Mongoose 自定义的验证器
在缺省情况下创建的索引均不是唯一索引。创建唯一索引:
var UserSchema = new mongoose.Schema({ name: { type: String, required: true, }, age: { type: Number, // 是否必须的校验器 required: true, // 数字类型的最大值校验器 max: 120, // 数字类型的最小值校验器 min: 0 }, status: { type: String, // 设置字符串的可选值 enum: ['0', '1', '2'] }, phone: { type: Number, match: /^\d{11}$/ }, desc: { type: String, // 自定义的验证器,如果通过验证返回 true,没有通过则返回 false validate: function (desc) { return desc.length >= 10; } } });
demo:
var mongoose = require('./db.js'); //mongoose数据校验:用户通过mongoose给mongodb数据库增加数据的时候,对数据的合法性进行的验证 //mongoose里面定义Schema:字段类型,修饰符、默认参数 、数据校验都是为了数据库数据的一致性 //Schema,为数据库对象的集合,每个schema会映射到mongodb中的一个collection,定义Schema可以理解为表结构的定义 var UserSchema = mongoose.Schema({ name: { type: String,//指定类型 trim: true, //修饰符 required: true }, sn: { type: String, index: true, //索引. set(val) { //自定义修饰符 return val; }, // maxlength:20, // minlength:10 // match:/^sn(.*)/ , validate: function (sn) { return sn.length >= 10; } }, age: { type: Number, min: 0, //用在number类型上面 max: 150 }, status: { type: String, default: 'success', //默认值 enum: ['success', 'error'] //status的值必须在 对应的数组里面 注意枚举是用在String } }) module.exports = mongoose.model('User', UserSchema, 'user');
操作:
var UserModel=require('./model/user.js'); var user = new UserModel({ name:'赵四', sn:'sn12232421433', age: 90, status:'error' }); user.save(function(err){ if(err){ console.log(err); return; } console.log('成功') });
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!