08- Mongoose 数据校验

675 阅读1分钟

1、Mongoose 数据校验

Mongoose 有一些内建验证器。

  • 所有 SchemaTypes 都有内建 required 验证器。required 验证器使用 checkRequired() 函数 判定这个值是否满足 required 验证器
  • Numbers 有 min 和 max 验证器.
  • Strings 有 enum、 match、 maxlength 和 minlength 验证器
  • required:表示这个数据必须传入
  • max:用于Number类型数据,最大值
  • min:用于Number类型数据,最小值
  • enum:枚举类型,要求数据必须满足枚举值enum: ['0', '1', '2']
  • match:增加的数据必须符合 match(正则)的规则
  • maxlength:长度最大值
  • minlength:长度最小值
 var 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;
        }
      }
    });

2、Mongoose 自定义验证器

如果内建检验器不够用了,你可以定义满足自己需要的检验器

自定义检验器通过传入一个检验函数来定义,更多细节请看 SchemaType#validate() API 文档。

 var userSchema = new Schema({
      phone: {
        type: String,
        validate: {
          validator: function(v) {
            // 自定义的验证器,如果通过验证返回   true,没有通过则返回  false
            return /\d{3}-\d{3}-\d{4}/.test(v);
          },
          message: '{VALUE} is not a valid phone number!'
        },
        required: [true, 'User phone number required']
      }
    });

    var User = db.model('user', userSchema);
    var user = new User();