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; 
			} 
		} 
	});

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)
    })
})





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值