zoukankan      html  css  js  c++  java
  • 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('成功')
    });
    
  • 相关阅读:
    C# 谈谈代码重构
    收藏.NET 技术社区
    步步为营 .NET三层架构解析 四、Model设计(四种设计方式)
    C# 谈谈abstract用法 和一个简单abstract factory
    步步为营 .NET三层架构解析 一、什么是三层架构
    用户登陆的验证码的制作
    控制部分字体的颜色
    回发或回调参数无效。在配置中使用 <pages enableEventValidation= "true "/> 或在页面中使用 <%@ Page EnableEventValidation= "true " %> 启用了事件验证
    实习记2
    sniffer攻击
  • 原文地址:https://www.cnblogs.com/loaderman/p/11516081.html
Copyright © 2011-2022 走看看