Mongoose扩展默认验证

onl*_*oon 2 javascript mongoose mongodb node.js

我想在mongoose模式验证规则中构建"minLength"和"maxLength",目前的解决方案是:

var blogSchema = new Schema({
  title: { required: true, type: String }
});

blogSchema.path('title').validate(function(value) {
  if (value.length < 8 || value.length > 32) return next(new Error('length'));
});
Run Code Online (Sandbox Code Playgroud)

但是我想这应该通过添加自定义架构规则来简化:

var blogSchema = new Schema({
    title: {
        type: String,
        required: true,
        minLength: 8,
        maxLength: 32
    }
});
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做,这甚至可能吗?

Rob*_*res 10

查看库mongoose-validator.它集成了node-validator库,以便在mongoose模式中使用,其方式与您描述的方式非常相似.

具体来说,node-validator lenminmax方法应该提供您需要的逻辑.

试试:

var validate = require('mongoose-validator').validate;

var blogSchema = new Schema({
 title: {
    type: String,
    required: true,
    validate: validate('len', 8, 32)
 }
});
Run Code Online (Sandbox Code Playgroud)


小智 5

maxlength和minlength现在存在。您的代码应按以下方式工作。

    var mongoose = require('mongoose');
    var blogSchema = new mongoose.Schema({
        title: {
             type: String,
             required: true,
             minLength: 8,
             maxLength: 32
        }
    });
Run Code Online (Sandbox Code Playgroud)