【问题标题】:mongoose schema set max length for a String [duplicate]猫鼬模式设置字符串的最大长度[重复]
【发布时间】:2015-05-03 23:49:19
【问题描述】:

我在 Nodejs 中用猫鼬做一个模式。我正在尝试找到一种方法来限制SchemaString 中的字符数。我发现可以使用带有关键字 match 的正则表达式,例如:

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

但我只是想知道是否有一些参数可以直接指定最大长度,像这样:

var schema = new Schema({
{
    name: {type: String, max: 20}
});

感谢您的帮助。

【问题讨论】:

标签: mongodb mongoose schema


【解决方案1】:

由于 Mongoose 4.0.0-rc2maxLength 验证可用:

var Schema = new mongoose.Schema({
  name: {type: String, required: true, maxLength: 20}
});

对于早于 4.0.0-rc2 的版本,内置了 is no such validation

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

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

或者您可以使用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}
});

【讨论】:

猜你喜欢
  • 2012-04-27
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 2021-12-27
相关资源
最近更新 更多