一、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; } } });
user.js:
var mongoose = require('./db.js');var UserSchema = mongoose.Schema({name: {type: String,required: true,get(params) {return "a001" + params}},sn: {type: String,index: true,maxlength: 20,minlength: 10,// match: /^sn(.*)/i,validate: function(sn) {return sn.length >= 10}},age: {type: Number,min: 0,max: 150},status: {type: Number,default: 1, // 默认数据enum: [0,1,2]}
})
// 静态方法
UserSchema.statics.findBySn = function(sn,cb) {// 通过find方法获取sn的数据 通过this关键字来获取当前的Modelthis.find({"sn": sn}, function(err,data) {cb(err, data)})
}// 实例方法
UserSchema.methods.print = function() {console.log('我是一个实例方法')console.log(this)
}var UserModel = mongoose.model('User', UserSchema, 'users')
module.exports = UserModel
app.js:
var UserModel = require('./model/user.js')var user = new UserModel({name: '李四322',sn: 'sn888',age: 10,status: 1
})
// UserModel.findBySn('8888', function(err, data) {
// if(err) {
// console.log(err)
// return;
// }
// console.log(data)
// })// user.print(); // 自定义的实例方法// console.log(user.name,user.age)user.save(function(err) {if(err) {console.log(err)return;}// 新增数据成功后,查询数据UserModel.find({}, function(err,data) {if(err) {console.log(err)return;}console.log(data)})
})