一、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关键字来获取当前的Model
this.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)
})
})