zoukankan      html  css  js  c++  java
  • Mongoose 校验参数

    mongoose数据校验是指用户通过mongoose给mongodb数据库增加数据的时候,对数据的合法性进行的验证,在mongoose里面定义Schema的时候,通过设置字段类型,修饰符、默认参数 、数据校验等都是为了数据库数据的一致性。
    required: 表示这个数据必须传入
    max: 用于 Number 类型数据,最大值
    min: 用于 Number 类型数据,最小值
    enum:枚举类型,用于String要求数据必须满足枚举值 enum: ['0', '1', '2']
    match:增加的数据必须符合 match(正则)的规则
    maxlength:最大值
    minlength:最小值
    var mongoose=require('./db.js');
    var UserSchema=mongoose.Schema({
        name:{
            type:String,//指定类型
            trim:true,   //修饰符         
            required:true //该数据不能缺省
        },
        sn:{
            type:String,
            index:true,  //普通索引.
            set(val){  //自定义修饰符
                return val;
            },
            // maxlength:20,//长度不能超过20
            // minlength:10//长度不能小于10
            // match:/^sn(.*)/ ,//必须符合该正则表达式
            validate: function(sn) {//自定义验证规则
                return sn.length >= 10;
            }
        // 也可以是
        
        validate: {
            validator: function(v) {
              return /d{3}-d{3}-d{4}/.test(v);
            },
            message: props => `${props.value} is not a valid phone number!`
          },
        },   
        age:{
            type:Number,
            min:0,    //用在number类型上面
            max:150//最大值为150
        },       
        status:{
            type:String, 
            default:'success', //默认值
            enum:['success','error']   //status的值必须在 对应的数组里面  注意枚举是用在String
        }
    })
    module.exports=mongoose.model('User',UserSchema,'user');
    const breakfastSchema = new Schema({
      eggs: {
        type: Number,
    min: [
    6, 'Must be at least 6, got {VALUE}'], // 可以传一个数组 {VALUE}会被替换为校验的值 max: 12 }, drink: { type: String, enum: { values: ['Coffee', 'Tea'], message: '{VALUE} is not supported' } } }); const Breakfast = db.model('Breakfast', breakfastSchema); const badBreakfast = new Breakfast({ eggs: 2, drink: 'Milk' }); let error = badBreakfast.validateSync(); assert.equal(error.errors['eggs'].message, 'Must be at least 6, got 2'); assert.equal(error.errors['drink'].message, 'Milk is not supported');
    const breakfastSchema = new Schema({
      eggs: {
        type: Number,
        min: [6, 'Too few eggs'],
        max: 12
      },
      bacon: {
        type: Number,
        required: [true, 'Why no bacon?']
      },
      drink: {
        type: String,
        enum: ['Coffee', 'Tea'],
        required: function() { // 也可以是自定义的函数
          return this.bacon > 3;
        }
      }
    });
    const Breakfast = db.model('Breakfast', breakfastSchema);
    
    const badBreakfast = new Breakfast({
      eggs: 2,
      bacon: 0,
      drink: 'Milk'
    });
    let error = badBreakfast.validateSync();
    assert.equal(error.errors['eggs'].message,
      'Too few eggs');
    assert.ok(!error.errors['bacon']);
    assert.equal(error.errors['drink'].message,
      '`Milk` is not a valid enum value for path `drink`.');
    
    badBreakfast.bacon = 5;
    badBreakfast.drink = null;
    
    error = badBreakfast.validateSync();
    assert.equal(error.errors['drink'].message, 'Path `drink` is required.');
    
    badBreakfast.bacon = null;
    error = badBreakfast.validateSync();
    assert.equal(error.errors['bacon'].message, 'Why no bacon?');
  • 相关阅读:
    ThinkPHP模版引擎之变量输出具体解释
    Heat-AutoScaling
    開始搭建第一个zookeeper
    OpenCV学习笔记(六十二)——《OpenCV Computer Version with Python》阅读摘要
    Oracle可插拔数据库的jdbc连接串写法
    MVVM设计模式基础知识--ICommand接口
    CodeForces
    一见钟情Sublime
    # 从零開始搭建Hadoop2.7.1的分布式集群
    C语言遍历文件和文件夹——————【Badboy】
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/14789373.html
Copyright © 2011-2022 走看看