• 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?');
  • 相关阅读:
    模拟按键'ESC',解决韩语等输入法对输入框(codemirror)的支持
    grpc的基础知识
    HttpClientFactory 是 HttpClient 的正确使用方式
    Workflow Core + asp.net core 5.0 实现简单审批工作流
    GitHub自动化部署(CD) asp.net core 5.0 项目(免费空间)
    CleanArchitecture Application代码生成插件-让程序员告别CURD Ctrl+C Ctrl+V
    C# 字符串转成JSON对象 反射获取属性值
    java设计模式-状态模式
    2021目前可用的百度网盘不限速下载方法
    docker映射配置文件
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/14789373.html
Copyright © 2020-2023  润新知