egg(27)--mongoose数据校验

protian 2019-06-29

连接数据库

db.js

mongodb4.x连接数据库时,要带上{ useNewUrlParser: true }

var mongoose = require('mongoose');
mongoose.connect('mongodb://eggadmin:[email protected]:27017/eggcms',{ useNewUrlParser: true },function(err){
    if(err){
        console.log(err)
        return
    }
    console.log("数据库连接成功")
})

module.exports = mongoose;

egg(27)--mongoose数据校验

required 数据必须传入,用于String,Number

user.js
var mongoose = require('./db.js');
var UserSchema = mongoose.Schema({
    name:{
        type:String,
        required:true
    },
    sn:{
        type:String,
        index:true
    },
    age:Number,
    status:{
        type:Number,
        default:1
    }
})

var UserModel = mongoose.model('User',UserSchema,'user');
module.exports = UserModel
index.js
var UserModel = require('./user.js');
var user = new UserModel({
    // name:'标题3',
    age:20,
    sn:"123456"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

egg(27)--mongoose数据校验

max,min,用于Number

Number类型数据,最大值和最小值

user.js
age:{
        type:Number,
        min:0,
        max:150
    },
index.js
var user = new UserModel({
    name:'标题3',
    age:166,
    sn:"123456"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

egg(27)--mongoose数据校验

enum枚举类型,要求数据必须满足枚举值,用于String

user.js
status:{
        type:String,
        enum:["success","error"]
    }
index.js
var user = new UserModel({
    name:'标题3',
    age:16,
    sn:"123456",
    status:"success22"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

egg(27)--mongoose数据校验

maxlength,minlength,最大和最小长度,用于String

user.js
sn:{
        type:String,
        index:true,
        maxlength:20,
        minlength:10
    },
index.js
var user = new UserModel({
    name:'标题3',
    age:16,
    sn:"123456",
    status:"success"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

egg(27)--mongoose数据校验

mathc 正则表达式,用于String

user.js
sn:{
        type:String,
        index:true,
        match:/^sn(.*)/   //必须以sn开头
    },
index.js
var user = new UserModel({
    name:'标题3',
    age:16,
    sn:"123456",
    status:"success"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

egg(27)--mongoose数据校验

新增sn开头的数据

index.js
var user = new UserModel({
    name:'标题3',
    age:16,
    sn:"sn123456",
    status:"success"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

egg(27)--mongoose数据校验

validate自定义,true的时候增加数据

自定义的验证器,如果通过验证返回 true,没有通过则返回 false

user.js
sn:{
        type:String,
        index:true,
        validate:function(desc){
            return desc.length >= 10;
        }
    },
index.js
var user = new UserModel({
    name:'标题3',
    age:16,
    sn:"sn123456",
    status:"success"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

egg(27)--mongoose数据校验

传入长度大于10的数据

index.js
var user = new UserModel({
    name:'标题3',
    age:16,
    sn:"sn123522222456",
    status:"success"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

egg(27)--mongoose数据校验

相关推荐

hanyueqi / 0评论 2019-06-28