mongoose校验数据

Schema的数据校验

在定义Schema数据模式的时候,可以对字段的值进行数据校验;
确保满足条件的数据才会被添加到数据库中。

required-必填校验

  • 针对与任意类型,指定的字段必须传入
var userSchema = mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    sn: String
})

var u = new UserModel({
    sn : 'sn1234567812',
})
// User validation failed: name: Path `name` is required.

长度校验

  • maxlengthminlength:针对于String类型,控制字符串的长度
var userSchema = mongoose.Schema({
    sn: {
        type: String,
        maxlength: 20,
        minlength: 10,
    }
})

var u = new UserModel({
    sn : 'sn123', 
    // User validation failed: sn: Path `sn` (`sn123`) is shorter than the minimum allowed length (10)

    sn : 'sn123123123123123123123', 
    // User validation failed: sn: Path `sn` (`sn123123123123123123123`) is longer than the maximum allowed length (20).
})

大小校验

  • maxmin:针对于Number类型,控制数值的大小
var userSchema = mongoose.Schema({
    height: {
        type: Number,
        min: 1,
        max: 500
    }
})

var u = new UserModel({
    height : -1, 
    //  User validation failed: height: Path `height` (-1) is less than minimum allowed value (1).

    height : 500, 
    // User validation failed: height: Path `height` (500) is more than maximum allowed value (500).
})

enum-枚举校验

  • enum指定一个数组,规定传入的值必须在数组中存在,一般用来限制状态
  • String类型和Number类型都能够生效
var userSchema = mongoose.Schema({
    isUse: {
        type: Number,
        enum: [0, 1] // 值必须在枚举的数组里面 Number和String都支持
    }
})

var u = new UserModel({
    status : 2, 
    //  User validation failed: status: `2` is not a valid enum value for path `status`.
})

match-正则匹配

  • 使用match,设置正则表达式,用来限制数据的内容
var userSchema = mongoose.Schema({
    sn: {
        type: String,
        macth: /^sn(.*)g/i
    }
})

var u = new UserModel({
    sn : '1sn123', 
    // User validation failed: sn: Path `sn` is invalid (1sn123)
})

validate-自定义校验规则

  • 如果mongoose提供的校验规则无法满足你的需求,可以自定义校验规则
var userSchema = mongoose.Schema({
    name: {
        type: String,
        validate: function (val) {
            if(this.status === 1) {
                return val.indexOf("zhangsan") != -1
            } else {
                return val.indexOf("lisi") != -1
            }
        }
    },
    status: Number
})

var u = new UserModel({
    name : 'lisi',
    status: 1
})
// User1 validation failed: name: Validator failed for path `name` with value `lisi`
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值