mongoose schema设置String的最大长度

Fab*_*Fab 4 schema mongoose mongodb

我在Nodejs中使用mongoose进行模式化.我正试图找到一种方法来限制SchemaString中的字符数.我发现可以使用关键字匹配的正则表达式:

var schema = new Schema({
{
    name: {type: String, match: '/^.{0,20}$/'}
});
Run Code Online (Sandbox Code Playgroud)

但我只是想知道是否有一些参数可以直接指定最大长度,如下所示:

var schema = new Schema({
{
    name: {type: String, max: 20}
});
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

vic*_*ohl 8

根据github 上的这个问题,目前没有长度验证.它仅在4.0.0-rc2版本中可用.

但是,您可以使用路径功能创建此验证:

Schema.path('name').validate(function (v) {
    return v.length <= 20;
}, 'The maximum length is 20.');
Run Code Online (Sandbox Code Playgroud)

或者你可以使用mongoose-validator.从他们自述文件中的示例:

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

var nameValidator = [
  validate({
    validator: 'isLength',
    arguments: [3, 50],
    message: 'Name should be between 3 and 50 characters'
  }),
  validate({
    validator: 'isAlphanumeric',
    passIfEmpty: true,
    message: 'Name should contain alpha-numeric characters only'
  })
];

var Schema = new mongoose.Schema({
  name: {type: String, required: true, validate: nameValidator}
});
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,现在有长度验证:https://mongoosejs.com/docs/schematypes.html 例如名称:{type:String,maxlength:100} (3认同)