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('成功')
});

 

 

posted on 2020-02-15 15:42  LoaderMan  阅读(898)  评论(0编辑  收藏  举报

导航